List of usage examples for com.amazonaws.services.kinesis.model PutRecordsRequestEntry clone
@Override
public PutRecordsRequestEntry clone()
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(); }