Package io.debezium.schema
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
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.debezium.spi.topic.TopicNamingStrategy
io.debezium.spi.topic.TopicNamingStrategy.TopicSchemaAugment<S>, io.debezium.spi.topic.TopicNamingStrategy.TopicValueAugment<I extends io.debezium.spi.schema.DataCollectionId,S, R> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate Stringprivate Patternprivate Stringprivate static final org.slf4j.Loggerstatic final io.debezium.config.Fieldstatic final io.debezium.config.Fieldstatic final io.debezium.config.Fieldstatic final io.debezium.config.Fieldstatic final io.debezium.config.Fieldstatic final io.debezium.config.Fieldprivate Patternprivate StringFields inherited from class io.debezium.schema.AbstractTopicNamingStrategy
DEFAULT_HEARTBEAT_TOPIC_PREFIX, DEFAULT_TRANSACTION_TOPIC, delimiter, heartbeatPrefix, heartbeatTopicName, multiPartitionMode, prefix, replacement, TOPIC_CACHE_SIZE, TOPIC_DELIMITER, TOPIC_HEARTBEAT_NAME, TOPIC_HEARTBEAT_PREFIX, TOPIC_TRANSACTION, topicNames, transactionFields inherited from interface io.debezium.spi.topic.TopicNamingStrategy
MAX_NAME_LENGTH, NO_SCHEMA_OP, NO_VALUE_OP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidconfigure(Properties props) dataChangeTopic(io.debezium.spi.schema.DataCollectionId id) protected StringdetermineNewTopic(io.debezium.spi.schema.DataCollectionId tableId, String oldTopic) Determine the new topic name.abstract StringgetOriginTopic(io.debezium.spi.schema.DataCollectionId id) io.debezium.spi.topic.TopicNamingStrategy.TopicSchemaAugment<org.apache.kafka.connect.data.SchemaBuilder> io.debezium.spi.topic.TopicNamingStrategy.TopicValueAugment<io.debezium.spi.schema.DataCollectionId, org.apache.kafka.connect.data.Schema, org.apache.kafka.connect.data.Struct> private static intvalidateKeyFieldReplacement(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.private static intvalidateTopicReplacement(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.Methods inherited from class io.debezium.schema.AbstractTopicNamingStrategy
getSchemaPartsTopicName, heartbeatTopic, isValidCharacter, mkString, sanitizedTopicName, schemaChangeTopic, transactionTopic, validateHeartbeatTopicNameMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.debezium.spi.topic.TopicNamingStrategy
recordSchemaPrefix
-
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
-
topicReplacement
-
keyEnforceUniqueness
private boolean keyEnforceUniqueness -
keyFieldName
-
keyFieldRegex
-
keyFieldReplacement
-
keyRegexReplaceCache
-
-
Constructor Details
-
AbstractRegexTopicNamingStrategy
-
-
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
- Specified by:
configurein interfaceio.debezium.spi.topic.TopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>- Overrides:
configurein classAbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
-
dataChangeTopic
- Specified by:
dataChangeTopicin interfaceio.debezium.spi.topic.TopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>- Specified by:
dataChangeTopicin classAbstractTopicNamingStrategy<io.debezium.spi.schema.DataCollectionId>
-
getOriginTopic
-
determineNewTopic
protected String determineNewTopic(io.debezium.spi.schema.DataCollectionId tableId, String oldTopic) 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 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, keyValueAugment()org.apache.kafka.connect.data.Struct>
-