Class JdbcSinkConnectorTask

java.lang.Object
org.apache.kafka.connect.sink.SinkTask
io.debezium.connector.jdbc.JdbcSinkConnectorTask
All Implemented Interfaces:
org.apache.kafka.connect.connector.Task

public class JdbcSinkConnectorTask extends org.apache.kafka.connect.sink.SinkTask
The main task executing streaming from sink connector. Responsible for lifecycle management of the streaming code.
Author:
Hossein Torabi
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • EMPTY_CLASS_ARRAY

      private static final Class[] EMPTY_CLASS_ARRAY
    • sessionFactory

      private org.hibernate.SessionFactory sessionFactory
    • state

    • stateLock

      private final ReentrantLock stateLock
    • changeEventSink

      private ChangeEventSink changeEventSink
    • offsets

      private final Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets
    • previousPutException

      private Throwable previousPutException
    • usePre380OriginalRecordAccess

      private boolean usePre380OriginalRecordAccess
      There is a change in InternalSinkRecord API between Connect 3.7 and 3.8. The code now uses 3.8 and use reflection to call old API if new one is not available.
    • pre380OriginalRecordMethod

      private Method pre380OriginalRecordMethod
  • Constructor Details

    • JdbcSinkConnectorTask

      public JdbcSinkConnectorTask()
  • Method Details

    • version

      public String version()
    • start

      public void start(Map<String,String> props)
      Specified by:
      start in interface org.apache.kafka.connect.connector.Task
      Specified by:
      start in class org.apache.kafka.connect.sink.SinkTask
    • put

      public void put(Collection<org.apache.kafka.connect.sink.SinkRecord> records)
      Specified by:
      put in class org.apache.kafka.connect.sink.SinkTask
    • open

      public void open(Collection<org.apache.kafka.common.TopicPartition> partitions)
      Overrides:
      open in class org.apache.kafka.connect.sink.SinkTask
    • close

      public void close(Collection<org.apache.kafka.common.TopicPartition> partitions)
      Overrides:
      close in class org.apache.kafka.connect.sink.SinkTask
    • preCommit

      public Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> preCommit(Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> currentOffsets)
      Overrides:
      preCommit in class org.apache.kafka.connect.sink.SinkTask
    • stop

      public void stop()
      Specified by:
      stop in interface org.apache.kafka.connect.connector.Task
      Specified by:
      stop in class org.apache.kafka.connect.sink.SinkTask
    • markProcessed

      private void markProcessed(org.apache.kafka.connect.sink.SinkRecord record)
      Marks a sink record as processed.
      Parameters:
      record - sink record, should not be null
    • markNotProcessed

      private void markNotProcessed(org.apache.kafka.connect.sink.SinkRecord record)
      Marks a single record as not processed.
      Parameters:
      record - sink record, should not be null
    • getOriginalTopicName

      private String getOriginalTopicName(org.apache.kafka.connect.sink.SinkRecord record)
    • getOriginalKafkaPartition

      private Integer getOriginalKafkaPartition(org.apache.kafka.connect.sink.SinkRecord record)
    • getOriginalKafkaOffset

      private long getOriginalKafkaOffset(org.apache.kafka.connect.sink.SinkRecord record)