Example usage for com.amazonaws.services.kinesis AmazonKinesisClient putRecord

List of usage examples for com.amazonaws.services.kinesis AmazonKinesisClient putRecord

Introduction

In this page you can find the example usage for com.amazonaws.services.kinesis AmazonKinesisClient putRecord.

Prototype

@Override
public PutRecordResult putRecord(PutRecordRequest request) 

Source Link

Document

Writes a single data record into an Amazon Kinesis data stream.

Usage

From source file:com.mh2c.LogGenerator.java

License:Apache License

/**
 * Generates log lines and sends them to Kinesis.
 *
 * @param streamName Kinesis stream name
 * @param recsPerSecond number of records to send each second
 * @param numRecords total number of records to send
 *//*from w  ww . ja v  a 2  s .c  o m*/
public void generate(String streamName, int recsPerSecond, int numRecords) throws InterruptedException {

    AmazonKinesisClient client = new AmazonKinesisClient();

    int numPasses = (numRecords + recsPerSecond - 1) / recsPerSecond;
    int recordsLeft = numRecords;
    for (int i = 0; i < numPasses; i++) {
        int numToGenerate = Math.min(recordsLeft, recsPerSecond);
        for (int j = 0; j < numToGenerate; j++) {
            String logLine = generateLogLine();

            PutRecordRequest request = new PutRecordRequest().withStreamName(streamName)
                    .withPartitionKey(PARTITION_KEY)
                    .withData(ByteBuffer.wrap(logLine.getBytes(StandardCharsets.UTF_8)));
            PutRecordResult result = client.putRecord(request);
            System.out.println(
                    String.format("Wrote to shard %s as %s", result.getShardId(), result.getSequenceNumber()));
        }

        recordsLeft -= numToGenerate;
        if (recordsLeft > 0) {
            Thread.sleep(1000L);
        }
    }
}