Class KafkaMessageDrivenChannelAdapter<K,V>
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.MessageProducerSupport
org.springframework.integration.kafka.inbound.KafkaMessageDrivenChannelAdapter<K,V>
- Type Parameters:
K
- the key type.V
- the value type.
- All Implemented Interfaces:
org.springframework.beans.factory.Aware
,org.springframework.beans.factory.BeanFactoryAware
,org.springframework.beans.factory.BeanNameAware
,org.springframework.beans.factory.DisposableBean
,org.springframework.beans.factory.InitializingBean
,org.springframework.beans.factory.SmartInitializingSingleton
,org.springframework.context.ApplicationContextAware
,org.springframework.context.Lifecycle
,org.springframework.context.Phased
,org.springframework.context.SmartLifecycle
,org.springframework.integration.context.ExpressionCapable
,org.springframework.integration.context.OrderlyShutdownCapable
,org.springframework.integration.core.MessageProducer
,org.springframework.integration.core.Pausable
,org.springframework.integration.IntegrationPattern
,KafkaInboundEndpoint
,org.springframework.integration.support.context.NamedComponent
,org.springframework.integration.support.management.IntegrationInboundManagement
,org.springframework.integration.support.management.IntegrationManagement
,org.springframework.integration.support.management.ManageableLifecycle
,org.springframework.integration.support.management.ManageableSmartLifecycle
,org.springframework.integration.support.management.TrackableComponent
public class KafkaMessageDrivenChannelAdapter<K,V>
extends org.springframework.integration.endpoint.MessageProducerSupport
implements KafkaInboundEndpoint, org.springframework.integration.context.OrderlyShutdownCapable, org.springframework.integration.core.Pausable
Message-driven channel adapter.
- Since:
- 5.4
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
The listener mode for the container, record or batch.Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
org.springframework.integration.support.management.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.integration.kafka.inbound.KafkaInboundEndpoint
CONTEXT_ACKNOWLEDGMENT, CONTEXT_CONSUMER, CONTEXT_RECORD
Fields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE
-
Constructor Summary
ConstructorDescriptionKafkaMessageDrivenChannelAdapter
(org.springframework.kafka.listener.AbstractMessageListenerContainer<K, V> messageListenerContainer) Construct an instance with modeKafkaMessageDrivenChannelAdapter.ListenerMode.record
.KafkaMessageDrivenChannelAdapter
(org.springframework.kafka.listener.AbstractMessageListenerContainer<K, V> messageListenerContainer, KafkaMessageDrivenChannelAdapter.ListenerMode mode) Construct an instance with the provided mode. -
Method Summary
Modifier and TypeMethodDescriptionint
int
protected void
doStart()
protected void
doStop()
protected org.springframework.core.AttributeAccessor
getErrorMessageAttributes
(org.springframework.messaging.Message<?> message) boolean
isPaused()
protected void
onInit()
void
pause()
void
resume()
void
setAckDiscarded
(boolean ackDiscarded) Aboolean
flag to indicate ifFilteringMessageListenerAdapter
should acknowledge discarded records or not.void
setBatchMessageConverter
(org.springframework.kafka.support.converter.BatchMessageConverter messageConverter) Set the message converter to use with a batch-based consumer.void
setBindSourceRecord
(boolean bindSourceRecord) Set to true to bind the source consumer record in the header namedIntegrationMessageHeaderAccessor.SOURCE_DATA
.void
setFilterInRetry
(boolean filterInRetry) Theboolean
flag to specify the order in which the filter and retry operations are performed.void
setMessageConverter
(org.springframework.kafka.support.converter.MessageConverter messageConverter) Set the message converter; must be aRecordMessageConverter
orBatchMessageConverter
depending on mode.void
setOnPartitionsAssignedSeekCallback
(BiConsumer<Map<org.apache.kafka.common.TopicPartition, Long>, org.springframework.kafka.listener.ConsumerSeekAware.ConsumerSeekCallback> onPartitionsAssignedCallback) Specify aBiConsumer
for seeks management duringConsumerSeekAware.onPartitionsAssigned(Map, ConsumerSeekAware.ConsumerSeekCallback)
call from theKafkaMessageListenerContainer
.void
setPayloadType
(Class<?> payloadType) When using a type-aware message converter such asStringJsonMessageConverter
, set the payload type the converter should create.void
setRecordFilterStrategy
(org.springframework.kafka.listener.adapter.RecordFilterStrategy<K, V> recordFilterStrategy) Specify aRecordFilterStrategy
to wrapKafkaMessageDrivenChannelAdapter.IntegrationRecordMessageListener
intoFilteringMessageListenerAdapter
.void
setRecordMessageConverter
(org.springframework.kafka.support.converter.RecordMessageConverter messageConverter) Set the message converter to use with a record-based consumer.void
setRecoveryCallback
(org.springframework.retry.RecoveryCallback<?> recoveryCallback) ARecoveryCallback
instance for retry operation; if null, the exception will be thrown to the container after retries are exhausted (unless an error channel is configured).void
setRetryTemplate
(org.springframework.retry.support.RetryTemplate retryTemplate) Specify aRetryTemplate
instance to use for retrying deliveries.Methods inherited from class org.springframework.integration.endpoint.MessageProducerSupport
afterSingletonsInstantiated, buildErrorMessage, getErrorChannel, 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, getIntegrationProperty, 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.kafka.inbound.KafkaInboundEndpoint
doWithRetry
Methods inherited from interface org.springframework.integration.support.management.ManageableLifecycle
isRunning, start, stop
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Constructor Details
-
KafkaMessageDrivenChannelAdapter
public KafkaMessageDrivenChannelAdapter(org.springframework.kafka.listener.AbstractMessageListenerContainer<K, V> messageListenerContainer) Construct an instance with modeKafkaMessageDrivenChannelAdapter.ListenerMode.record
.- Parameters:
messageListenerContainer
- the container.
-
KafkaMessageDrivenChannelAdapter
public KafkaMessageDrivenChannelAdapter(org.springframework.kafka.listener.AbstractMessageListenerContainer<K, V> messageListenerContainer, KafkaMessageDrivenChannelAdapter.ListenerMode mode) Construct an instance with the provided mode.- Parameters:
messageListenerContainer
- the container.mode
- the mode.
-
-
Method Details
-
setMessageConverter
public void setMessageConverter(org.springframework.kafka.support.converter.MessageConverter messageConverter) Set the message converter; must be aRecordMessageConverter
orBatchMessageConverter
depending on mode.- Parameters:
messageConverter
- the converter.
-
setRecordMessageConverter
public void setRecordMessageConverter(org.springframework.kafka.support.converter.RecordMessageConverter messageConverter) Set the message converter to use with a record-based consumer.- Parameters:
messageConverter
- the converter.
-
setBatchMessageConverter
public void setBatchMessageConverter(org.springframework.kafka.support.converter.BatchMessageConverter messageConverter) Set the message converter to use with a batch-based consumer.- Parameters:
messageConverter
- the converter.
-
setRecordFilterStrategy
public void setRecordFilterStrategy(org.springframework.kafka.listener.adapter.RecordFilterStrategy<K, V> recordFilterStrategy) Specify aRecordFilterStrategy
to wrapKafkaMessageDrivenChannelAdapter.IntegrationRecordMessageListener
intoFilteringMessageListenerAdapter
.- Parameters:
recordFilterStrategy
- theRecordFilterStrategy
to use.
-
setAckDiscarded
public void setAckDiscarded(boolean ackDiscarded) Aboolean
flag to indicate ifFilteringMessageListenerAdapter
should acknowledge discarded records or not. Does not make sense ifsetRecordFilterStrategy(RecordFilterStrategy)
isn't specified.- Parameters:
ackDiscarded
- true to ack (commit offset for) discarded messages.
-
setRetryTemplate
public void setRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate) Specify aRetryTemplate
instance to use for retrying deliveries.IMPORTANT: This form of retry is blocking and could cause a rebalance if the aggregate retry delays across all polled records might exceed the
max.poll.interval.ms
. Instead, consider adding aDefaultErrorHandler
to the listener container, configured with aKafkaErrorSendingMessageRecoverer
.- Parameters:
retryTemplate
- theRetryTemplate
to use.
-
setRecoveryCallback
public void setRecoveryCallback(org.springframework.retry.RecoveryCallback<?> recoveryCallback) ARecoveryCallback
instance for retry operation; if null, the exception will be thrown to the container after retries are exhausted (unless an error channel is configured). Only used if asetRetryTemplate(RetryTemplate)
is specified. Default is anErrorMessageSendingRecoverer
if an error channel has been provided. Set to null if you wish to throw the exception back to the container after retries are exhausted.- Parameters:
recoveryCallback
- the recovery callback.
-
setFilterInRetry
public void setFilterInRetry(boolean filterInRetry) Theboolean
flag to specify the order in which the filter and retry operations are performed. Does not make sense if only one ofRetryTemplate
orRecordFilterStrategy
is present, or none. When true, the filter is called for each retry; when false, the filter is only called once for each delivery from the container.- Parameters:
filterInRetry
- true to filter for each retry. Defaults tofalse
.
-
setPayloadType
When using a type-aware message converter such asStringJsonMessageConverter
, set the payload type the converter should create. Defaults toObject
.- Parameters:
payloadType
- the type.
-
setOnPartitionsAssignedSeekCallback
public void setOnPartitionsAssignedSeekCallback(BiConsumer<Map<org.apache.kafka.common.TopicPartition, Long>, org.springframework.kafka.listener.ConsumerSeekAware.ConsumerSeekCallback> onPartitionsAssignedCallback) Specify aBiConsumer
for seeks management duringConsumerSeekAware.onPartitionsAssigned(Map, ConsumerSeekAware.ConsumerSeekCallback)
call from theKafkaMessageListenerContainer
. This is called from the internalMessagingMessageListenerAdapter
implementation.- Parameters:
onPartitionsAssignedCallback
- theBiConsumer
to use- See Also:
-
ConsumerSeekAware.onPartitionsAssigned(java.util.Map<org.apache.kafka.common.TopicPartition, java.lang.Long>, org.springframework.kafka.listener.ConsumerSeekAware.ConsumerSeekCallback)
-
setBindSourceRecord
public void setBindSourceRecord(boolean bindSourceRecord) Set to true to bind the source consumer record in the header namedIntegrationMessageHeaderAccessor.SOURCE_DATA
. Does not apply to batch listeners.- Parameters:
bindSourceRecord
- true to bind.
-
getComponentType
- Specified by:
getComponentType
in interfaceorg.springframework.integration.support.context.NamedComponent
- Overrides:
getComponentType
in classorg.springframework.integration.context.IntegrationObjectSupport
-
onInit
protected void onInit()- Overrides:
onInit
in classorg.springframework.integration.endpoint.MessageProducerSupport
-
doStart
protected void doStart()- Overrides:
doStart
in classorg.springframework.integration.endpoint.MessageProducerSupport
-
doStop
protected void doStop()- Overrides:
doStop
in classorg.springframework.integration.endpoint.MessageProducerSupport
-
pause
public void pause()- Specified by:
pause
in interfaceorg.springframework.integration.core.Pausable
-
resume
public void resume()- Specified by:
resume
in interfaceorg.springframework.integration.core.Pausable
-
isPaused
public boolean isPaused()- Specified by:
isPaused
in interfaceorg.springframework.integration.core.Pausable
-
beforeShutdown
public int beforeShutdown()- Specified by:
beforeShutdown
in interfaceorg.springframework.integration.context.OrderlyShutdownCapable
-
afterShutdown
public int afterShutdown()- Specified by:
afterShutdown
in interfaceorg.springframework.integration.context.OrderlyShutdownCapable
-
getErrorMessageAttributes
protected org.springframework.core.AttributeAccessor getErrorMessageAttributes(org.springframework.messaging.Message<?> message) - Overrides:
getErrorMessageAttributes
in classorg.springframework.integration.endpoint.MessageProducerSupport
-