Class PartitionRouting<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>

java.lang.Object
io.debezium.transforms.partitions.PartitionRouting<R>
Type Parameters:
R - the subtype of ConnectRecord on which this transformation will operate
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.kafka.common.Configurable, org.apache.kafka.connect.transforms.Transformation<R>

public class PartitionRouting<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> extends Object implements org.apache.kafka.connect.transforms.Transformation<R>
This SMT allow to use payload fields to calculate the destination partition.
Author:
Mario Fiore Vitale
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • MURMUR_HASH_3

      private static final MurmurHash3 MURMUR_HASH_3
    • NESTING_SEPARATOR

      public static final String NESTING_SEPARATOR
      See Also:
    • CHANGE_SPECIAL_FIELD

      public static final String CHANGE_SPECIAL_FIELD
      See Also:
    • FIELD_PAYLOAD_FIELD_CONF

      public static final String FIELD_PAYLOAD_FIELD_CONF
      See Also:
    • FIELD_TOPIC_PARTITION_NUM_CONF

      public static final String FIELD_TOPIC_PARTITION_NUM_CONF
      See Also:
    • FIELD_HASH_FUNCTION

      public static final String FIELD_HASH_FUNCTION
      See Also:
    • PARTITION_PAYLOAD_FIELDS_FIELD

      static final Field PARTITION_PAYLOAD_FIELDS_FIELD
    • TOPIC_PARTITION_NUM_FIELD

      static final Field TOPIC_PARTITION_NUM_FIELD
    • HASH_FUNCTION_FIELD

      static final Field HASH_FUNCTION_FIELD
    • smtManager

      private SmtManager<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> smtManager
    • payloadFields

      private List<String> payloadFields
    • partitionNumber

      private int partitionNumber
    • hashFc

  • Constructor Details

    • PartitionRouting

      public PartitionRouting()
  • Method Details

    • config

      public org.apache.kafka.common.config.ConfigDef config()
      Specified by:
      config in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • configure

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

      public R apply(R originalRecord)
      Specified by:
      apply in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
    • toValue

      private Optional<Object> toValue(String fieldName, org.apache.kafka.connect.data.Struct envelope)
    • getLastStruct

      private static org.apache.kafka.connect.data.Struct getLastStruct(org.apache.kafka.connect.data.Struct envelope, String[] subFields)
    • getFieldName

      private static String getFieldName(org.apache.kafka.connect.data.Struct envelope, String[] subFields, int i)
    • buildNewRecord

      private R buildNewRecord(R originalRecord, org.apache.kafka.connect.data.Struct envelope, int partition)
    • computePartition

      protected int computePartition(Integer partitionNumber, List<Object> values)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface org.apache.kafka.connect.transforms.Transformation<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>