Class MongoEventRouter<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
java.lang.Object
io.debezium.connector.mongodb.transforms.outbox.MongoEventRouter<R>
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.kafka.common.Configurable,org.apache.kafka.connect.components.Versioned,org.apache.kafka.connect.transforms.Transformation<R>
@Incubating
public class MongoEventRouter<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
extends Object
implements org.apache.kafka.connect.transforms.Transformation<R>, org.apache.kafka.connect.components.Versioned
Debezium MongoDB Outbox Event Router SMT
- Author:
- Sungho Hwang
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate org.apache.kafka.connect.transforms.ExtractField<R>private final MongoDataConverterprivate final EventRouterDelegate<R>private booleanprivate Stringprivate Stringprivate final org.bson.json.JsonWriterSettingsprivate static final org.slf4j.Logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate org.apache.kafka.connect.data.SchemabuildNewAfterSchema(String schemaName, org.bson.BsonDocument afterBsonDocument) Builds a new Schema object of STRUCT type with BsonDocument parsed from original after field JSON string using MongoDataConverter.private org.apache.kafka.connect.data.StructbuildNewAfterStruct(org.apache.kafka.connect.data.Schema afterSchema, org.bson.BsonDocument afterBsonDocument) Builds a new Struct object with previously built Schema and BsonDocument parsed from original after field JSON string using MongoDataConverter.private org.apache.kafka.connect.data.SchemabuildNewValueSchema(String valueSchemaName, org.apache.kafka.connect.data.Schema originalValueSchema, org.apache.kafka.connect.data.Schema afterSchema) Builds a new Schema object for Kafka Record's value replacing original after field with newly built Schema.private org.apache.kafka.connect.data.StructbuildNewValueStruct(org.apache.kafka.connect.data.Struct originalValueStruct, org.apache.kafka.connect.data.Schema newValueSchema, org.apache.kafka.connect.data.Struct newAfterStruct) Builds a new Struct object for Kafka Record's value replacing original after field with newly built Struct.voidclose()org.apache.kafka.common.config.ConfigDefconfig()voidconvertConfigMap(Map<String, T> oldConfigMap) Converts MongoDB Outbox Event Router-style configMap to relational oneCreates configuration properties converter to convert MongoDB Outbox Event Router's to relational one.private RexpandAfterField(R originalRecord) Replaces after field by parsing and expanding original JSON string to Struct type.private <T> booleanhasConfigFieldEventId(Map<String, T> configMap) version()
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
jsonWriterSettings
private final org.bson.json.JsonWriterSettings jsonWriterSettings -
converter
-
fieldTimestamp
-
fieldPayload
-
expandPayload
private boolean expandPayload -
afterExtractor
-
eventRouterDelegate
private final EventRouterDelegate<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> eventRouterDelegate
-
-
Constructor Details
-
MongoEventRouter
public MongoEventRouter()
-
-
Method Details
-
apply
-
config
public org.apache.kafka.common.config.ConfigDef config() -
close
public void close() -
configure
- Specified by:
configurein interfaceorg.apache.kafka.common.Configurable
-
version
- Specified by:
versionin interfaceorg.apache.kafka.connect.components.Versioned
-
expandAfterField
Replaces after field by parsing and expanding original JSON string to Struct type.- Parameters:
originalRecord- an original Record from MongoDB Connector- Returns:
- a new Record of which after field is replaced with new one
- Throws:
IllegalStateException- if after field of original Record is not an expected form
-
buildNewAfterSchema
private org.apache.kafka.connect.data.Schema buildNewAfterSchema(String schemaName, org.bson.BsonDocument afterBsonDocument) Builds a new Schema object of STRUCT type with BsonDocument parsed from original after field JSON string using MongoDataConverter.- Parameters:
schemaName- a name of new Schema to be builtafterBsonDocument- a BsonDocument parsed from JSON string of after field in a change event- Returns:
- a Schema object built
-
buildNewAfterStruct
private org.apache.kafka.connect.data.Struct buildNewAfterStruct(org.apache.kafka.connect.data.Schema afterSchema, org.bson.BsonDocument afterBsonDocument) Builds a new Struct object with previously built Schema and BsonDocument parsed from original after field JSON string using MongoDataConverter.- Parameters:
afterSchema- a new Schema of after field previously built with BsonDocumentafterBsonDocument- a BsonDocument parsed from JSON string of after field in a change event- Returns:
- a Struct object built
-
buildNewValueSchema
private org.apache.kafka.connect.data.Schema buildNewValueSchema(String valueSchemaName, org.apache.kafka.connect.data.Schema originalValueSchema, org.apache.kafka.connect.data.Schema afterSchema) Builds a new Schema object for Kafka Record's value replacing original after field with newly built Schema.- Parameters:
valueSchemaName- a name of new Schema to be builtoriginalValueSchema- an original Schema of Record's valueafterSchema- a new Schema of after field that'll replace original one- Returns:
- a Schema object built
-
buildNewValueStruct
private org.apache.kafka.connect.data.Struct buildNewValueStruct(org.apache.kafka.connect.data.Struct originalValueStruct, org.apache.kafka.connect.data.Schema newValueSchema, org.apache.kafka.connect.data.Struct newAfterStruct) Builds a new Struct object for Kafka Record's value replacing original after field with newly built Struct.- Parameters:
originalValueStruct- an original Struct of Record's valuenewValueSchema- a new Schema of Record's valuenewAfterStruct- a new Struct of after field that'll replace original one- Returns:
-
convertConfigMap
Converts MongoDB Outbox Event Router-style configMap to relational one- Type Parameters:
T- a type of values of given configMap- Parameters:
oldConfigMap- an original configMap- Returns:
- a converted configMap
-
hasConfigFieldEventId
-
createFieldNameConverter
Creates configuration properties converter to convert MongoDB Outbox Event Router's to relational one.- Returns:
- a HashMap object for converting configuration fields
-