Package io.debezium.transforms.outbox
Class EventRouterDelegate<R extends org.apache.kafka.connect.connector.ConnectRecord<R>>
- java.lang.Object
-
- io.debezium.transforms.outbox.EventRouterDelegate<R>
-
public class EventRouterDelegate<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> extends Object
A delegate class having common logic between Outbox Event Routers for SQL DBs and MongoDB- Author:
- Sungho Hwang
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
EventRouterDelegate.DefaultConfigurationProvider
static interface
EventRouterDelegate.RecordConverter<R>
-
Field Summary
-
Constructor Summary
Constructors Constructor Description EventRouterDelegate()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description R
apply(R r, EventRouterDelegate.RecordConverter<R> recordConverter)
void
close()
org.apache.kafka.common.config.ConfigDef
config()
void
configure(Map<String,?> configMap)
private Object
defineRecordKey(String fieldEventKey, org.apache.kafka.connect.data.Struct eventStruct, Object fallbackKey)
private org.apache.kafka.connect.data.Schema
defineRecordKeySchema(String fieldEventKey, org.apache.kafka.connect.data.Schema eventStruct, org.apache.kafka.connect.data.Field fallbackKeyField)
private Long
getEventTimestampMs(String fieldEventTimestamp, org.apache.kafka.connect.data.Struct debeziumEventValue, org.apache.kafka.connect.data.Struct eventStruct)
Returns the Kafka record timestamp for the outgoing record.private org.apache.kafka.connect.data.SchemaBuilder
getSchemaBuilder(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
private String
getSchemaName(org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
private org.apache.kafka.connect.data.Schema
getValueSchema(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, Integer version, String routedTopic)
private org.apache.kafka.connect.data.Schema
getValueSchema(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
private void
handleUnexpectedOperation(R r)
private EventRouterConfigurationProvider
lookupConfigurationProvider(org.apache.kafka.connect.data.Struct record)
Lookup the configuration provider for the source connector or use the default if not found.private com.fasterxml.jackson.databind.JsonNode
parseJsonPayload(String jsonString)
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
ENVELOPE_PAYLOAD
private static final String ENVELOPE_PAYLOAD
- See Also:
- Constant Field Values
-
afterExtractor
private final org.apache.kafka.connect.transforms.ExtractField<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> afterExtractor
-
regexRouter
private final org.apache.kafka.connect.transforms.RegexRouter<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> regexRouter
-
invalidOperationBehavior
private EventRouterConfigDefinition.InvalidOperationBehavior invalidOperationBehavior
-
tracingSmt
private final ActivateTracingSpan<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> tracingSmt
-
configurationProviders
private final Map<String,EventRouterConfigurationProvider> configurationProviders
-
defaultConfigurationProvider
private final EventRouterDelegate.DefaultConfigurationProvider defaultConfigurationProvider
-
fieldSchemaVersion
private String fieldSchemaVersion
-
routeTombstoneOnEmptyPayload
private boolean routeTombstoneOnEmptyPayload
-
additionalFields
private List<EventRouterConfigDefinition.AdditionalField> additionalFields
-
defaultValueSchema
private org.apache.kafka.connect.data.Schema defaultValueSchema
-
versionedValueSchema
private final Map<Integer,org.apache.kafka.connect.data.Schema> versionedValueSchema
-
onlyHeadersInOutputMessage
private boolean onlyHeadersInOutputMessage
-
expandJsonPayload
private boolean expandJsonPayload
-
objectMapper
private com.fasterxml.jackson.databind.ObjectMapper objectMapper
-
smtManager
private SmtManager<R extends org.apache.kafka.connect.connector.ConnectRecord<R>> smtManager
-
-
Method Detail
-
apply
public R apply(R r, EventRouterDelegate.RecordConverter<R> recordConverter)
-
getEventTimestampMs
private Long getEventTimestampMs(String fieldEventTimestamp, org.apache.kafka.connect.data.Struct debeziumEventValue, org.apache.kafka.connect.data.Struct eventStruct)
Returns the Kafka record timestamp for the outgoing record. Either obtained from the configured field or the timestamp when Debezium processed the event.
-
defineRecordKeySchema
private org.apache.kafka.connect.data.Schema defineRecordKeySchema(String fieldEventKey, org.apache.kafka.connect.data.Schema eventStruct, org.apache.kafka.connect.data.Field fallbackKeyField)
-
defineRecordKey
private Object defineRecordKey(String fieldEventKey, org.apache.kafka.connect.data.Struct eventStruct, Object fallbackKey)
-
handleUnexpectedOperation
private void handleUnexpectedOperation(R r)
-
parseJsonPayload
private com.fasterxml.jackson.databind.JsonNode parseJsonPayload(String jsonString) throws Exception
- Throws:
Exception
-
config
public org.apache.kafka.common.config.ConfigDef config()
-
close
public void close()
-
getValueSchema
private org.apache.kafka.connect.data.Schema getValueSchema(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
-
getValueSchema
private org.apache.kafka.connect.data.Schema getValueSchema(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, Integer version, String routedTopic)
-
getSchemaBuilder
private org.apache.kafka.connect.data.SchemaBuilder getSchemaBuilder(String fieldPayload, org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
-
getSchemaName
private String getSchemaName(org.apache.kafka.connect.data.Schema debeziumEventSchema, String routedTopic)
-
lookupConfigurationProvider
private EventRouterConfigurationProvider lookupConfigurationProvider(org.apache.kafka.connect.data.Struct record)
Lookup the configuration provider for the source connector or use the default if not found.
-
-