Example usage for com.amazonaws.services.kinesis.model PutRecordsRequestEntry clone

List of usage examples for com.amazonaws.services.kinesis.model PutRecordsRequestEntry clone

Introduction

In this page you can find the example usage for com.amazonaws.services.kinesis.model PutRecordsRequestEntry clone.

Prototype

@Override
    public PutRecordsRequestEntry clone() 

Source Link

Usage

From source file:dbtucker.connect.kinesis.KinesisSinkTask.java

License:Apache License

@Override
public void put(Collection<SinkRecord> collection) {
    if (collection.isEmpty())
        return;//from   www .  ja v a  2 s  . c  o m
    final Map<String, List<PutRecordsRequestEntry>> writesByStream = new HashMap<>();
    for (SinkRecord record : collection) {
        final String streamName = config.getStreamFormat().replace("${topic}", record.topic());
        List<PutRecordsRequestEntry> writes = writesByStream.get(streamName);
        if (writes == null) {
            writes = new ArrayList<>();
            writesByStream.put(streamName, writes);
        }

        final PutRecordsRequestEntry put = new PutRecordsRequestEntry();
        put.setData(ByteBuffer.wrap(record.value().toString().getBytes()));
        if (record.key() != null) {
            if (record.keySchema() != null) {
                // TODO: correctly parse schema'ed key
                put.setPartitionKey(record.key().toString()); // assume toString handles real Strings correctly
            } else {
                put.setPartitionKey(record.key().toString()); // assume toString handles real Strings correctly
            }
        } else {
            put.setPartitionKey("Partition_1");
        }

        writes.add(put.clone());
    }

    writesByStream.forEach((stream, reqEntries) -> {
        try {
            putRecords(stream, reqEntries);
        } catch (Exception e) {
            log.warn("Write to stream {} failed; remaining retries={}", stream, remainingRetries);
            if (remainingRetries == 0) {
                throw new ConnectException(e);
            } else {
                remainingRetries--;
                context.timeout(config.getRetryBackoffMs());
                throw new RetriableException(e);
            }
        }
    });

    remainingRetries = config.getMaxRetries();
}