Class AbstractRegexTopicNamingStrategy

java.lang.Object
io.debezium.schema.AbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
io.debezium.schema.AbstractRegexTopicNamingStrategy
All Implemented Interfaces:
io.debezium.spi.topic.TopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
Direct Known Subclasses:
DefaultRegexTopicNamingStrategy, SchemaRegexTopicNamingStrategy

@Incubating public abstract class AbstractRegexTopicNamingStrategy extends AbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
An abstract regex implementation of TopicNamingStrategy.
Author:
Harvey Yue
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • TOPIC_REGEX

      public static final io.debezium.config.Field TOPIC_REGEX
    • TOPIC_REPLACEMENT

      public static final io.debezium.config.Field TOPIC_REPLACEMENT
    • TOPIC_KEY_ENFORCE_UNIQUENESS

      public static final io.debezium.config.Field TOPIC_KEY_ENFORCE_UNIQUENESS
    • TOPIC_KEY_FIELD_NAME

      public static final io.debezium.config.Field TOPIC_KEY_FIELD_NAME
    • TOPIC_KEY_FIELD_REGEX

      public static final io.debezium.config.Field TOPIC_KEY_FIELD_REGEX
    • TOPIC_KEY_FIELD_REPLACEMENT

      public static final io.debezium.config.Field TOPIC_KEY_FIELD_REPLACEMENT
    • topicRegex

      private Pattern topicRegex
    • topicReplacement

      private String topicReplacement
    • keyEnforceUniqueness

      private boolean keyEnforceUniqueness
    • keyFieldName

      private String keyFieldName
    • keyFieldRegex

      private Pattern keyFieldRegex
    • keyFieldReplacement

      private String keyFieldReplacement
    • keyRegexReplaceCache

      private io.debezium.util.BoundedConcurrentHashMap<String,String> keyRegexReplaceCache
  • Constructor Details

    • AbstractRegexTopicNamingStrategy

      public AbstractRegexTopicNamingStrategy(Properties props)
  • Method Details

    • validateTopicReplacement

      private static int validateTopicReplacement(io.debezium.config.Configuration config, io.debezium.config.Field field, io.debezium.config.Field.ValidationOutput problems)
      If TOPIC_REGEX has a value that is really a regex, then the TOPIC_REPLACEMENT must be a non-empty value.
    • validateKeyFieldReplacement

      private static int validateKeyFieldReplacement(io.debezium.config.Configuration config, io.debezium.config.Field field, io.debezium.config.Field.ValidationOutput problems)
      If TOPIC_KEY_FIELD_REGEX has a value that is really a regex, then the TOPIC_KEY_FIELD_REPLACEMENT must be a non-empty value.
    • configure

      public void configure(Properties props)
      Specified by:
      configure in interface io.debezium.spi.topic.TopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
      Overrides:
      configure in class AbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
    • dataChangeTopic

      public String dataChangeTopic(io.debezium.spi.schema.DataCollectionId id)
      Specified by:
      dataChangeTopic in interface io.debezium.spi.topic.TopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
      Specified by:
      dataChangeTopic in class AbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
    • getOriginTopic

      public abstract String getOriginTopic(io.debezium.spi.schema.DataCollectionId id)
    • determineNewTopic

      protected String determineNewTopic(io.debezium.spi.schema.DataCollectionId tableId, String oldTopic)
      Determine the new topic name.
      Parameters:
      tableId - the table id
      oldTopic - the name of the old topic
      Returns:
      return the new topic name, if the regex applies. Otherwise, return original topic.
    • keySchemaAugment

      public io.debezium.spi.topic.TopicNamingStrategy.TopicSchemaAugment<org.apache.kafka.connect.data.SchemaBuilder> keySchemaAugment()
    • keyValueAugment

      public io.debezium.spi.topic.TopicNamingStrategy.TopicValueAugment<io.debezium.spi.schema.DataCollectionId,org.apache.kafka.connect.data.Schema,org.apache.kafka.connect.data.Struct> keyValueAugment()