Class DebeziumMessageProducer
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.MessageProducerSupport
org.springframework.integration.debezium.inbound.DebeziumMessageProducer
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,BeanNameAware
,DisposableBean
,InitializingBean
,SmartInitializingSingleton
,ApplicationContextAware
,Lifecycle
,Phased
,SmartLifecycle
,ExpressionCapable
,MessageProducer
,IntegrationPattern
,NamedComponent
,IntegrationInboundManagement
,IntegrationManagement
,ManageableLifecycle
,ManageableSmartLifecycle
,TrackableComponent
Debezium Change Event Channel Adapter.
- Since:
- 6.2
- Author:
- Christian Tzolov, Artem Bilan
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
IntegrationManagement.ManagementOverrides
-
Field Summary
Fields inherited from class org.springframework.integration.endpoint.AbstractEndpoint
lifecycleCondition, lifecycleLock
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Fields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE
-
Constructor Summary
ConstructorDescriptionDebeziumMessageProducer
(io.debezium.engine.DebeziumEngine.Builder<io.debezium.engine.ChangeEvent<byte[], byte[]>> debeziumBuilder) Create new Debezium message producer inbound channel adapter. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
doStart()
Take no action by default.protected void
doStop()
Take no action by default.Subclasses may implement this method to provide component type information.protected void
onInit()
Subclasses may implement this for initialization logic.void
setContentType
(String contentType) Set the outbound message content type.void
setEnableBatch
(boolean enable) Enable theChangeEvent
batch mode handling.void
setEnableEmptyPayload
(boolean enabled) Enable support for tombstone (aka delete) messages.void
setHeaderMapper
(HeaderMapper<List<io.debezium.engine.Header<Object>>> headerMapper) void
setTaskExecutor
(TaskExecutor taskExecutor) Set aTaskExecutor
for the Debezium engine task.Methods inherited from class org.springframework.integration.endpoint.MessageProducerSupport
afterSingletonsInstantiated, buildErrorMessage, getErrorChannel, getErrorMessageAttributes, getErrorMessageStrategy, getIntegrationPatternType, getMessagingTemplate, getOutputChannel, isObserved, registerObservationRegistry, sendErrorMessageIfNecessary, sendMessage, setErrorChannel, setErrorChannelName, setErrorMessageStrategy, setObservationConvention, setOutputChannel, setOutputChannelName, setSendTimeout, setShouldTrack, subscribeToPublisher
Methods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
destroy, doStop, getPhase, getRole, isActive, isAutoStartup, isRunning, setAutoStartup, setPhase, setRole, start, stop, stop
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement
destroy, getManagedName, getManagedType, getOverrides, getThisAs, isLoggingEnabled, registerMetricsCaptor, setLoggingEnabled, setManagedName, setManagedType
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Constructor Details
-
DebeziumMessageProducer
public DebeziumMessageProducer(io.debezium.engine.DebeziumEngine.Builder<io.debezium.engine.ChangeEvent<byte[], byte[]>> debeziumBuilder) Create new Debezium message producer inbound channel adapter.- Parameters:
debeziumBuilder
- - pre-configured Debezium Engine Builder instance.
-
-
Method Details
-
setEnableBatch
public void setEnableBatch(boolean enable) Enable theChangeEvent
batch mode handling. When enabled the channel adapter will send aList
ofChangeEvent
s as a payload in a single downstreamMessage
. Such a batch payload is not serializable. By default, the batch mode is disabled, e.g. every inputChangeEvent
is converted into a single downstreamMessage
.- Parameters:
enable
- set to true to enable the batch mode. Disabled by default.
-
setEnableEmptyPayload
public void setEnableEmptyPayload(boolean enabled) Enable support for tombstone (aka delete) messages. On a database row delete, Debezium can send a tombstone change event that has the same key as the deleted row and a value ofOptional.empty()
. This record is a marker for downstream processors. It indicates that log compaction can remove all records that have this key. When the tombstone functionality is enabled in the Debezium connector configuration you should enable the empty payload as well.- Parameters:
enabled
- set true to enable the empty payload. Disabled by default.
-
setTaskExecutor
Set aTaskExecutor
for the Debezium engine task.- Parameters:
taskExecutor
- theTaskExecutor
to use.
-
setContentType
Set the outbound message content type. Must be aligned with theSerializationFormat
configuration used by the providedDebeziumEngine
. -
setHeaderMapper
- Parameters:
headerMapper
-HeaderMapper
implementation to use. Defaults toDefaultDebeziumHeaderMapper
.
-
getComponentType
Description copied from class:IntegrationObjectSupport
Subclasses may implement this method to provide component type information.- Specified by:
getComponentType
in interfaceNamedComponent
- Overrides:
getComponentType
in classIntegrationObjectSupport
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupport
Subclasses may implement this for initialization logic.- Overrides:
onInit
in classMessageProducerSupport
-
doStart
protected void doStart()Description copied from class:MessageProducerSupport
Take no action by default. Subclasses may override this if they need lifecycle-managed behavior. Protected by 'lifecycleLock'.- Overrides:
doStart
in classMessageProducerSupport
-
doStop
protected void doStop()Description copied from class:MessageProducerSupport
Take no action by default. Subclasses may override this if they need lifecycle-managed behavior.- Overrides:
doStop
in classMessageProducerSupport
-