Class KafkaRecordEmitter

java.lang.Object
io.debezium.connector.cassandra.KafkaRecordEmitter
All Implemented Interfaces:
Emitter, AutoCloseable

public class KafkaRecordEmitter extends Object implements Emitter
This emitter is responsible for emitting records to Kafka broker and managing offsets post send.
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • producer

      private final org.apache.kafka.clients.producer.KafkaProducer<byte[],byte[]> producer
    • topicNamingStrategy

      private final io.debezium.spi.topic.TopicNamingStrategy<KeyspaceTable> topicNamingStrategy
    • offsetWriter

      private final OffsetWriter offsetWriter
    • offsetFlushPolicy

      private final OffsetFlushPolicy offsetFlushPolicy
    • erroneousCommitLogs

      private final Set<String> erroneousCommitLogs
    • commitLogTransfer

      private final CommitLogTransfer commitLogTransfer
    • futures

      private final Map<Record,Future<org.apache.kafka.clients.producer.RecordMetadata>> futures
    • lock

      private final Object lock
    • keyConverter

      private final org.apache.kafka.connect.storage.Converter keyConverter
    • valueConverter

      private final org.apache.kafka.connect.storage.Converter valueConverter
    • timeOfLastFlush

      private long timeOfLastFlush
    • emitCount

      private long emitCount
  • Constructor Details

    • KafkaRecordEmitter

      public KafkaRecordEmitter(CassandraConnectorConfig connectorConfig, 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 Details

    • emit

      public void emit(Record record)
      Specified by:
      emit in interface Emitter
    • toProducerRecord

      protected 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() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception