Package io.debezium.schema
Class AbstractRegexTopicNamingStrategy
java.lang.Object
io.debezium.schema.AbstractTopicNamingStrategy<DataCollectionId>
io.debezium.schema.AbstractRegexTopicNamingStrategy
- All Implemented Interfaces:
TopicNamingStrategy<DataCollectionId>
- Direct Known Subclasses:
DefaultRegexTopicNamingStrategy
,SchemaRegexTopicNamingStrategy
@Incubating
public abstract class AbstractRegexTopicNamingStrategy
extends AbstractTopicNamingStrategy<DataCollectionId>
An abstract regex implementation of
TopicNamingStrategy
.- Author:
- Harvey Yue
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.debezium.spi.topic.TopicNamingStrategy
TopicNamingStrategy.TopicSchemaAugment<S extends Object>, TopicNamingStrategy.TopicValueAugment<I extends DataCollectionId,
S extends Object, R extends Object> -
Field Summary
Modifier and TypeFieldDescriptionprivate boolean
private String
private Pattern
private String
private BoundedConcurrentHashMap<String,
String> private static final org.slf4j.Logger
static final Field
static final Field
static final Field
static final Field
static final Field
static final Field
private Pattern
private String
Fields inherited from class io.debezium.schema.AbstractTopicNamingStrategy
DEFAULT_HEARTBEAT_TOPIC_PREFIX, DEFAULT_TRANSACTION_TOPIC, delimiter, heartbeatPrefix, prefix, TOPIC_CACHE_SIZE, TOPIC_DELIMITER, TOPIC_HEARTBEAT_PREFIX, TOPIC_TRANSACTION, topicNames, transaction
Fields inherited from interface io.debezium.spi.topic.TopicNamingStrategy
MAX_NAME_LENGTH, NO_SCHEMA_OP, NO_VALUE_OP, REPLACEMENT_CHAR
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
configure
(Properties props) protected String
determineNewTopic
(DataCollectionId tableId, String oldTopic) Determine the new topic name.abstract String
TopicNamingStrategy.TopicSchemaAugment<org.apache.kafka.connect.data.SchemaBuilder>
TopicNamingStrategy.TopicValueAugment<DataCollectionId,
org.apache.kafka.connect.data.Schema, org.apache.kafka.connect.data.Struct> private static int
validateKeyFieldReplacement
(Configuration config, Field field, 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.private static int
validateTopicReplacement
(Configuration config, Field field, Field.ValidationOutput problems) If TOPIC_REGEX has a value that is really a regex, then the TOPIC_REPLACEMENT must be a non-empty value.Methods inherited from class io.debezium.schema.AbstractTopicNamingStrategy
heartbeatTopic, mkString, schemaChangeTopic, transactionTopic
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.debezium.spi.topic.TopicNamingStrategy
sanitizedTopicName
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
TOPIC_REGEX
-
TOPIC_REPLACEMENT
-
TOPIC_KEY_ENFORCE_UNIQUENESS
-
TOPIC_KEY_FIELD_NAME
-
TOPIC_KEY_FIELD_REGEX
-
TOPIC_KEY_FIELD_REPLACEMENT
-
topicRegex
-
topicReplacement
-
keyEnforceUniqueness
private boolean keyEnforceUniqueness -
keyFieldName
-
keyFieldRegex
-
keyFieldReplacement
-
keyRegexReplaceCache
-
-
Constructor Details
-
AbstractRegexTopicNamingStrategy
-
-
Method Details
-
validateTopicReplacement
private static int validateTopicReplacement(Configuration config, Field field, 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(Configuration config, Field field, 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
- Specified by:
configure
in interfaceTopicNamingStrategy<DataCollectionId>
- Overrides:
configure
in classAbstractTopicNamingStrategy<DataCollectionId>
-
dataChangeTopic
- Specified by:
dataChangeTopic
in interfaceTopicNamingStrategy<DataCollectionId>
- Specified by:
dataChangeTopic
in classAbstractTopicNamingStrategy<DataCollectionId>
-
getOriginTopic
-
determineNewTopic
Determine the new topic name.- Parameters:
tableId
- the table idoldTopic
- the name of the old topic- Returns:
- return the new topic name, if the regex applies. Otherwise, return original topic.
-
keySchemaAugment
public TopicNamingStrategy.TopicSchemaAugment<org.apache.kafka.connect.data.SchemaBuilder> keySchemaAugment() -
keyValueAugment
public TopicNamingStrategy.TopicValueAugment<DataCollectionId,org.apache.kafka.connect.data.Schema, keyValueAugment()org.apache.kafka.connect.data.Struct>
-