Class 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 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
      • erroneousCommitLogs

        private final Set<String> erroneousCommitLogs
      • futures

        private final Map<Record,​Future<org.apache.kafka.clients.producer.RecordMetadata>> futures
      • 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)