Class BinaryDataConverter

java.lang.Object
io.debezium.converters.BinaryDataConverter
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.kafka.common.Configurable, org.apache.kafka.connect.storage.Converter, org.apache.kafka.connect.storage.HeaderConverter

public class BinaryDataConverter extends Object implements org.apache.kafka.connect.storage.Converter, org.apache.kafka.connect.storage.HeaderConverter
A custom value converter that allows Avro messages to be delivered as raw binary data to kafka.

Designed to be used in the outbox pattern where payloads are pre-serialized by KafkaAvroSerializer within the application, then get written as either a ByteBuffer or Byte[] to the database.

These raw payloads become the body of the resulting Kafka message; allowing the consumer to deserialize using KafkaAvroDeserializer.

To enable the converter in a connector, the following value need to be specified: "value.converter": "io.debezium.converters.BinaryDataConverter"

Author:
Nathan Bradshaw
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • CONFIG_DEF

      private static final org.apache.kafka.common.config.ConfigDef CONFIG_DEF
    • DELEGATE_CONVERTER_TYPE

      protected static final String DELEGATE_CONVERTER_TYPE
      See Also:
    • delegateConverter

      private org.apache.kafka.connect.storage.Converter delegateConverter
  • Constructor Details

    • BinaryDataConverter

      public BinaryDataConverter()
  • Method Details

    • config

      public org.apache.kafka.common.config.ConfigDef config()
      Specified by:
      config in interface org.apache.kafka.connect.storage.Converter
      Specified by:
      config in interface org.apache.kafka.connect.storage.HeaderConverter
    • configure

      public void configure(Map<String,?> configs)
      Specified by:
      configure in interface org.apache.kafka.common.Configurable
    • configure

      public void configure(Map<String,?> configs, boolean isKey)
      Specified by:
      configure in interface org.apache.kafka.connect.storage.Converter
    • fromConnectData

      public byte[] fromConnectData(String topic, org.apache.kafka.connect.data.Schema schema, Object value)
      Specified by:
      fromConnectData in interface org.apache.kafka.connect.storage.Converter
    • toConnectData

      public org.apache.kafka.connect.data.SchemaAndValue toConnectData(String topic, byte[] value)
      Specified by:
      toConnectData in interface org.apache.kafka.connect.storage.Converter
    • fromConnectHeader

      public byte[] fromConnectHeader(String topic, String headerKey, org.apache.kafka.connect.data.Schema schema, Object value)
      Specified by:
      fromConnectHeader in interface org.apache.kafka.connect.storage.HeaderConverter
    • toConnectHeader

      public org.apache.kafka.connect.data.SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value)
      Specified by:
      toConnectHeader in interface org.apache.kafka.connect.storage.HeaderConverter
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • assertDelegateProvided

      private void assertDelegateProvided(String name, Object type)