59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"sync"
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
"github.com/aws/aws-sdk-go/aws/session"
|
|
"github.com/aws/aws-sdk-go/service/kinesis"
|
|
)
|
|
|
|
// Note: download file with test data
|
|
// curl https://s3.amazonaws.com/kinesis.test/users.txt -o /tmp/users.txt
|
|
|
|
func main() {
|
|
wg := &sync.WaitGroup{}
|
|
jobCh := make(chan string)
|
|
|
|
// read sample data
|
|
file, _ := os.Open("/tmp/users.txt")
|
|
defer file.Close()
|
|
scanner := bufio.NewScanner(file)
|
|
|
|
// initialize kinesis client
|
|
svc := kinesis.New(session.New())
|
|
|
|
for i := 0; i < 4; i++ {
|
|
wg.Add(1)
|
|
go func() {
|
|
for data := range jobCh {
|
|
params := &kinesis.PutRecordInput{
|
|
Data: []byte(data),
|
|
PartitionKey: aws.String("partitionKey"),
|
|
StreamName: aws.String("hw-test-stream"),
|
|
}
|
|
|
|
_, err := svc.PutRecord(params)
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
return
|
|
} else {
|
|
fmt.Print(".")
|
|
}
|
|
}
|
|
wg.Done()
|
|
}()
|
|
}
|
|
|
|
for scanner.Scan() {
|
|
data := scanner.Text()
|
|
jobCh <- data
|
|
}
|
|
|
|
fmt.Println(".")
|
|
fmt.Println("Finished populating stream")
|
|
}
|