Class KafkaMessageChannelBinder
- java.lang.Object
-
- org.springframework.cloud.stream.binder.AbstractBinder<org.springframework.messaging.MessageChannel,C,P>
-
- org.springframework.cloud.stream.binder.AbstractMessageChannelBinder<ExtendedConsumerProperties<KafkaConsumerProperties>,ExtendedProducerProperties<KafkaProducerProperties>,KafkaTopicProvisioner>
-
- org.springframework.cloud.stream.binder.kafka.KafkaMessageChannelBinder
-
- All Implemented Interfaces:
org.springframework.beans.factory.Aware
,org.springframework.beans.factory.InitializingBean
,Binder<org.springframework.messaging.MessageChannel,ExtendedConsumerProperties<KafkaConsumerProperties>,ExtendedProducerProperties<KafkaProducerProperties>>
,ExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
,ExtendedPropertiesBinder<org.springframework.messaging.MessageChannel,KafkaConsumerProperties,KafkaProducerProperties>
,PollableConsumerBinder<org.springframework.messaging.MessageHandler,ExtendedConsumerProperties<KafkaConsumerProperties>>
,org.springframework.context.ApplicationContextAware
,org.springframework.context.ApplicationEventPublisherAware
public class KafkaMessageChannelBinder extends AbstractMessageChannelBinder<ExtendedConsumerProperties<KafkaConsumerProperties>,ExtendedProducerProperties<KafkaProducerProperties>,KafkaTopicProvisioner> implements ExtendedPropertiesBinder<org.springframework.messaging.MessageChannel,KafkaConsumerProperties,KafkaProducerProperties>
ABinder
that uses Kafka as the underlying middleware.- Author:
- Eric Bottard, Marius Bogoevici, Ilayaperumal Gopinathan, David Turanski, Gary Russell, Mark Fisher, Soby Chacko, Henryk Konsek, Doug Saus, Lukasz Kaminski, Taras Danylchuk, Yi Liu
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.springframework.cloud.stream.binder.AbstractMessageChannelBinder
AbstractMessageChannelBinder.ErrorInfrastructure, AbstractMessageChannelBinder.PolledConsumerResources
-
-
Field Summary
Fields Modifier and Type Field Description static String
X_EXCEPTION_FQCN
Kafka header for x-exception-fqcn.static String
X_EXCEPTION_MESSAGE
Kafka header for x-exception-message.static String
X_EXCEPTION_STACKTRACE
Kafka header for x-exception-stacktrace.static String
X_ORIGINAL_OFFSET
Kafka header for x-original-offset.static String
X_ORIGINAL_PARTITION
Kafka header for x-original-partition.static String
X_ORIGINAL_TIMESTAMP
Kafka header for x-original-timestamp.static String
X_ORIGINAL_TIMESTAMP_TYPE
Kafka header for x-original-timestamp-type.static String
X_ORIGINAL_TOPIC
Kafka header for x-original-topic.-
Fields inherited from class org.springframework.cloud.stream.binder.AbstractMessageChannelBinder
provisioningProvider
-
Fields inherited from class org.springframework.cloud.stream.binder.AbstractBinder
logger
-
-
Constructor Summary
Constructors Constructor Description KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider)
KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider, ListenerContainerCustomizer<org.springframework.kafka.listener.AbstractMessageListenerContainer<?,?>> containerCustomizer, KafkaBindingRebalanceListener rebalanceListener)
KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider, ListenerContainerCustomizer<org.springframework.kafka.listener.AbstractMessageListenerContainer<?,?>> containerCustomizer, MessageSourceCustomizer<org.springframework.integration.kafka.inbound.KafkaMessageSource<?,?>> sourceCustomizer, KafkaBindingRebalanceListener rebalanceListener, DlqPartitionFunction dlqPartitionFunction, DlqDestinationResolver dlqDestinationResolver)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addClientFactoryCustomizer(ClientFactoryCustomizer customizer)
void
addConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer)
void
addProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer)
protected org.springframework.integration.core.MessageProducer
createConsumerEndpoint(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties)
protected org.springframework.kafka.core.ConsumerFactory<?,?>
createKafkaConsumerFactory(boolean anonymous, String consumerGroup, ExtendedConsumerProperties<KafkaConsumerProperties> consumerProperties, String beanName, String destination)
protected AbstractMessageChannelBinder.PolledConsumerResources
createPolledConsumerResources(String name, String group, ConsumerDestination destination, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties)
protected org.springframework.messaging.MessageHandler
createProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel errorChannel)
protected org.springframework.messaging.MessageHandler
createProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageChannel errorChannel)
String
getDefaultsPrefix()
protected org.springframework.messaging.MessageHandler
getErrorMessageHandler(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
protected org.springframework.integration.support.ErrorMessageStrategy
getErrorMessageStrategy()
KafkaConsumerProperties
getExtendedConsumerProperties(String channelName)
KafkaProducerProperties
getExtendedProducerProperties(String channelName)
Class<? extends BinderSpecificPropertiesProvider>
getExtendedPropertiesEntryClass()
protected org.springframework.messaging.MessageHandler
getPolledConsumerErrorMessageHandler(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
protected org.springframework.kafka.core.DefaultKafkaProducerFactory<byte[],byte[]>
getProducerFactory(String transactionIdPrefix, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, String beanName, String destination)
org.springframework.kafka.core.ProducerFactory<byte[],byte[]>
getTransactionalProducerFactory()
Return a reference to the binder's transaction manager's producer factory (if configured).protected void
postProcessOutputChannel(org.springframework.messaging.MessageChannel outputChannel, ExtendedProducerProperties<KafkaProducerProperties> producerProperties)
protected void
postProcessPollableSource(DefaultPollableMessageSource bindingTarget)
Collection<org.apache.kafka.common.PartitionInfo>
processTopic(String group, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties, org.springframework.kafka.core.ConsumerFactory<?,?> consumerFactory, int partitionCount, boolean usingPatterns, boolean groupManagement, String topic)
void
setClientFactoryCustomizer(ClientFactoryCustomizer customizer)
Deprecated.in favor ofaddClientFactoryCustomizer(ClientFactoryCustomizer)
.void
setConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer)
Deprecated.void
setDlqDestinationResolver(DlqDestinationResolver dlqDestinationResolver)
void
setDlqPartitionFunction(DlqPartitionFunction dlqPartitionFunction)
void
setExtendedBindingProperties(KafkaExtendedBindingProperties extendedBindingProperties)
void
setProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer)
Deprecated.void
setProducerListener(org.springframework.kafka.support.ProducerListener<byte[],byte[]> producerListener)
void
setRebalanceListener(KafkaBindingRebalanceListener rebalanceListener)
void
setupRebalanceListener(ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties, org.springframework.kafka.listener.ContainerProperties containerProperties)
protected boolean
useNativeEncoding(ExtendedProducerProperties<KafkaProducerProperties> producerProperties)
-
Methods inherited from class org.springframework.cloud.stream.binder.AbstractMessageChannelBinder
afterUnbindConsumer, afterUnbindProducer, bindPollableConsumer, doBindConsumer, doBindProducer, errorsBaseName, errorsBaseName, getApplicationEventPublisher, getContainerCustomizer, getDefaultErrorMessageHandler, getErrorBridgeName, getErrorBridgeName, getErrorMessageHandlerName, getErrorRecovererName, getMessageSourceCustomizer, getPolledConsumerRecoveryCallback, onInit, registerErrorInfrastructure, registerErrorInfrastructure, setApplicationEventPublisher, setConsumerEndpointCustomizer, setProducerMessageHandlerCustomizer
-
Methods inherited from class org.springframework.cloud.stream.binder.AbstractBinder
afterPropertiesSet, applyPrefix, bindConsumer, bindProducer, buildRetryTemplate, constructDLQName, getApplicationContext, getBeanFactory, getEvaluationContext, groupedName, setApplicationContext
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.springframework.cloud.stream.binder.Binder
bindConsumer, bindProducer
-
Methods inherited from interface org.springframework.cloud.stream.binder.ExtendedBindingProperties
getBindings
-
-
-
-
Field Detail
-
X_EXCEPTION_FQCN
public static final String X_EXCEPTION_FQCN
Kafka header for x-exception-fqcn.- See Also:
- Constant Field Values
-
X_EXCEPTION_STACKTRACE
public static final String X_EXCEPTION_STACKTRACE
Kafka header for x-exception-stacktrace.- See Also:
- Constant Field Values
-
X_EXCEPTION_MESSAGE
public static final String X_EXCEPTION_MESSAGE
Kafka header for x-exception-message.- See Also:
- Constant Field Values
-
X_ORIGINAL_TOPIC
public static final String X_ORIGINAL_TOPIC
Kafka header for x-original-topic.- See Also:
- Constant Field Values
-
X_ORIGINAL_PARTITION
public static final String X_ORIGINAL_PARTITION
Kafka header for x-original-partition.- See Also:
- Constant Field Values
-
X_ORIGINAL_OFFSET
public static final String X_ORIGINAL_OFFSET
Kafka header for x-original-offset.- See Also:
- Constant Field Values
-
X_ORIGINAL_TIMESTAMP
public static final String X_ORIGINAL_TIMESTAMP
Kafka header for x-original-timestamp.- See Also:
- Constant Field Values
-
X_ORIGINAL_TIMESTAMP_TYPE
public static final String X_ORIGINAL_TIMESTAMP_TYPE
Kafka header for x-original-timestamp-type.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
KafkaMessageChannelBinder
public KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider)
-
KafkaMessageChannelBinder
public KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider, ListenerContainerCustomizer<org.springframework.kafka.listener.AbstractMessageListenerContainer<?,?>> containerCustomizer, KafkaBindingRebalanceListener rebalanceListener)
-
KafkaMessageChannelBinder
public KafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, KafkaTopicProvisioner provisioningProvider, ListenerContainerCustomizer<org.springframework.kafka.listener.AbstractMessageListenerContainer<?,?>> containerCustomizer, MessageSourceCustomizer<org.springframework.integration.kafka.inbound.KafkaMessageSource<?,?>> sourceCustomizer, KafkaBindingRebalanceListener rebalanceListener, DlqPartitionFunction dlqPartitionFunction, DlqDestinationResolver dlqDestinationResolver)
-
-
Method Detail
-
setExtendedBindingProperties
public void setExtendedBindingProperties(KafkaExtendedBindingProperties extendedBindingProperties)
-
setProducerListener
public void setProducerListener(org.springframework.kafka.support.ProducerListener<byte[],byte[]> producerListener)
-
setClientFactoryCustomizer
@Deprecated public void setClientFactoryCustomizer(ClientFactoryCustomizer customizer)
Deprecated.in favor ofaddClientFactoryCustomizer(ClientFactoryCustomizer)
.Set aClientFactoryCustomizer
for theProducerFactory
andConsumerFactory
created inside the binder.- Parameters:
customizer
- the client factory customizer
-
addClientFactoryCustomizer
public void addClientFactoryCustomizer(ClientFactoryCustomizer customizer)
-
setRebalanceListener
public void setRebalanceListener(KafkaBindingRebalanceListener rebalanceListener)
-
setDlqPartitionFunction
public void setDlqPartitionFunction(DlqPartitionFunction dlqPartitionFunction)
-
setDlqDestinationResolver
public void setDlqDestinationResolver(DlqDestinationResolver dlqDestinationResolver)
-
getExtendedConsumerProperties
public KafkaConsumerProperties getExtendedConsumerProperties(String channelName)
- Specified by:
getExtendedConsumerProperties
in interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getExtendedProducerProperties
public KafkaProducerProperties getExtendedProducerProperties(String channelName)
- Specified by:
getExtendedProducerProperties
in interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getDefaultsPrefix
public String getDefaultsPrefix()
- Specified by:
getDefaultsPrefix
in interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getExtendedPropertiesEntryClass
public Class<? extends BinderSpecificPropertiesProvider> getExtendedPropertiesEntryClass()
- Specified by:
getExtendedPropertiesEntryClass
in interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getTransactionalProducerFactory
@Nullable public org.springframework.kafka.core.ProducerFactory<byte[],byte[]> getTransactionalProducerFactory()
Return a reference to the binder's transaction manager's producer factory (if configured). Use this to create a transaction manager in a bean definition when you wish to use producer-only transactions.- Returns:
- the transaction manager, or null.
-
createProducerMessageHandler
protected org.springframework.messaging.MessageHandler createProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel errorChannel) throws Exception
-
createProducerMessageHandler
protected org.springframework.messaging.MessageHandler createProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageChannel errorChannel) throws Exception
-
postProcessOutputChannel
protected void postProcessOutputChannel(org.springframework.messaging.MessageChannel outputChannel, ExtendedProducerProperties<KafkaProducerProperties> producerProperties)
-
getProducerFactory
protected org.springframework.kafka.core.DefaultKafkaProducerFactory<byte[],byte[]> getProducerFactory(String transactionIdPrefix, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, String beanName, String destination)
-
useNativeEncoding
protected boolean useNativeEncoding(ExtendedProducerProperties<KafkaProducerProperties> producerProperties)
-
createConsumerEndpoint
protected org.springframework.integration.core.MessageProducer createConsumerEndpoint(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties)
-
setupRebalanceListener
public void setupRebalanceListener(ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties, org.springframework.kafka.listener.ContainerProperties containerProperties)
-
processTopic
public Collection<org.apache.kafka.common.PartitionInfo> processTopic(String group, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties, org.springframework.kafka.core.ConsumerFactory<?,?> consumerFactory, int partitionCount, boolean usingPatterns, boolean groupManagement, String topic)
-
createPolledConsumerResources
protected AbstractMessageChannelBinder.PolledConsumerResources createPolledConsumerResources(String name, String group, ConsumerDestination destination, ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties)
-
postProcessPollableSource
protected void postProcessPollableSource(DefaultPollableMessageSource bindingTarget)
-
getErrorMessageStrategy
protected org.springframework.integration.support.ErrorMessageStrategy getErrorMessageStrategy()
-
getErrorMessageHandler
protected org.springframework.messaging.MessageHandler getErrorMessageHandler(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
-
getPolledConsumerErrorMessageHandler
protected org.springframework.messaging.MessageHandler getPolledConsumerErrorMessageHandler(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
-
createKafkaConsumerFactory
protected org.springframework.kafka.core.ConsumerFactory<?,?> createKafkaConsumerFactory(boolean anonymous, String consumerGroup, ExtendedConsumerProperties<KafkaConsumerProperties> consumerProperties, String beanName, String destination)
-
setConsumerConfigCustomizer
@Deprecated public void setConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer)
Deprecated.Set aConsumerConfigCustomizer
for theConsumerFactory
created inside the binder.- Parameters:
consumerConfigCustomizer
- the consumer config customizer
-
addConsumerConfigCustomizer
public void addConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer)
-
setProducerConfigCustomizer
@Deprecated public void setProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer)
Deprecated.Set aProducerConfigCustomizer
for theProducerFactory
created inside the binder.- Parameters:
producerConfigCustomizer
- the producer config customizer
-
addProducerConfigCustomizer
public void addProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer)
-
-