Package io.debezium.connector.cassandra
Class KafkaRecordEmitter
- java.lang.Object
-
- io.debezium.connector.cassandra.KafkaRecordEmitter
-
- All Implemented Interfaces:
AutoCloseable
public class KafkaRecordEmitter extends Object implements AutoCloseable
This emitter is responsible for emitting records to Kafka broker and managing offsets post send.
-
-
Field Summary
Fields Modifier and Type Field Description private CommitLogTransfercommitLogTransferprivate longemitCountprivate Set<String>erroneousCommitLogsprivate Map<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>>futuresprivate org.apache.kafka.connect.storage.ConverterkeyConverterprivate Objectlockprivate static org.slf4j.LoggerLOGGERprivate OffsetFlushPolicyoffsetFlushPolicyprivate OffsetWriteroffsetWriterprivate org.apache.kafka.clients.producer.KafkaProducer<byte[],byte[]>producerprivate longtimeOfLastFlushprivate io.debezium.schema.TopicSelector<KeyspaceTable>topicSelectorprivate org.apache.kafka.connect.storage.ConvertervalueConverter
-
Constructor Summary
Constructors Constructor Description KafkaRecordEmitter(String kafkaTopicPrefix, String heartbeatPrefix, org.apache.kafka.clients.producer.KafkaProducer kafkaProducer, OffsetWriter offsetWriter, Duration offsetFlushIntervalMs, long maxOffsetFlushSize, org.apache.kafka.connect.storage.Converter keyConverter, org.apache.kafka.connect.storage.Converter valueConverter, Set<String> erroneousCommitLogs, CommitLogTransfer commitLogTransfer)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidemit(Record record)private booleanflush(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)private voidflushAndMarkOffset()private booleanhasOffset(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)private voidmarkOffset(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)private voidmaybeFlushAndMarkOffset()private org.apache.kafka.clients.producer.ProducerRecord<byte[],byte[]>toProducerRecord(Record record)
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
producer
private final org.apache.kafka.clients.producer.KafkaProducer<byte[],byte[]> producer
-
topicSelector
private final io.debezium.schema.TopicSelector<KeyspaceTable> topicSelector
-
offsetWriter
private final OffsetWriter offsetWriter
-
offsetFlushPolicy
private final OffsetFlushPolicy offsetFlushPolicy
-
commitLogTransfer
private final CommitLogTransfer commitLogTransfer
-
lock
private final Object lock
-
timeOfLastFlush
private long timeOfLastFlush
-
emitCount
private long emitCount
-
keyConverter
private org.apache.kafka.connect.storage.Converter keyConverter
-
valueConverter
private org.apache.kafka.connect.storage.Converter valueConverter
-
-
Constructor Detail
-
KafkaRecordEmitter
public KafkaRecordEmitter(String kafkaTopicPrefix, String heartbeatPrefix, org.apache.kafka.clients.producer.KafkaProducer kafkaProducer, OffsetWriter offsetWriter, Duration offsetFlushIntervalMs, long maxOffsetFlushSize, org.apache.kafka.connect.storage.Converter keyConverter, org.apache.kafka.connect.storage.Converter valueConverter, Set<String> erroneousCommitLogs, CommitLogTransfer commitLogTransfer)
-
-
Method Detail
-
emit
public void emit(Record record)
-
toProducerRecord
private org.apache.kafka.clients.producer.ProducerRecord<byte[],byte[]> toProducerRecord(Record record)
-
maybeFlushAndMarkOffset
private void maybeFlushAndMarkOffset()
-
flushAndMarkOffset
private void flushAndMarkOffset()
-
flush
private boolean flush(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)
-
hasOffset
private boolean hasOffset(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)
-
markOffset
private void markOffset(Map.Entry<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> recordEntry)
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable
-
-