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>
A
Binder
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
Modifier and TypeFieldDescriptionstatic final String
Kafka header for x-exception-fqcn.static final String
Kafka header for x-exception-message.static final String
Kafka header for x-exception-stacktrace.static final String
Kafka header for x-original-offset.static final String
Kafka header for x-original-partition.static final String
Kafka header for x-original-timestamp.static final String
Kafka header for x-original-timestamp-type.static final String
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
ConstructorDescriptionKafkaMessageChannelBinder
(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
Modifier and TypeMethodDescriptionvoid
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) 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) protected org.springframework.messaging.MessageHandler
getErrorMessageHandler
(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties) protected org.springframework.integration.support.ErrorMessageStrategy
getExtendedConsumerProperties
(String channelName) getExtendedProducerProperties
(String channelName) Class<? extends BinderSpecificPropertiesProvider>
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[]> 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.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 Details
-
X_EXCEPTION_FQCN
Kafka header for x-exception-fqcn.- See Also:
-
X_EXCEPTION_STACKTRACE
Kafka header for x-exception-stacktrace.- See Also:
-
X_EXCEPTION_MESSAGE
Kafka header for x-exception-message.- See Also:
-
X_ORIGINAL_TOPIC
Kafka header for x-original-topic.- See Also:
-
X_ORIGINAL_PARTITION
Kafka header for x-original-partition.- See Also:
-
X_ORIGINAL_OFFSET
Kafka header for x-original-offset.- See Also:
-
X_ORIGINAL_TIMESTAMP
Kafka header for x-original-timestamp.- See Also:
-
X_ORIGINAL_TIMESTAMP_TYPE
Kafka header for x-original-timestamp-type.- See Also:
-
-
Constructor Details
-
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 Details
-
setExtendedBindingProperties
-
setProducerListener
public void setProducerListener(org.springframework.kafka.support.ProducerListener<byte[], byte[]> producerListener) -
setClientFactoryCustomizer
Deprecated.in favor ofaddClientFactoryCustomizer(ClientFactoryCustomizer)
.Set aClientFactoryCustomizer
for theProducerFactory
andConsumerFactory
created inside the binder.- Parameters:
customizer
- the client factory customizer
-
addClientFactoryCustomizer
-
setRebalanceListener
-
setDlqPartitionFunction
-
setDlqDestinationResolver
-
getExtendedConsumerProperties
- Specified by:
getExtendedConsumerProperties
in interfaceExtendedBindingProperties<KafkaConsumerProperties,
KafkaProducerProperties>
-
getExtendedProducerProperties
- Specified by:
getExtendedProducerProperties
in interfaceExtendedBindingProperties<KafkaConsumerProperties,
KafkaProducerProperties>
-
getDefaultsPrefix
- Specified by:
getDefaultsPrefix
in interfaceExtendedBindingProperties<KafkaConsumerProperties,
KafkaProducerProperties>
-
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
-
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
-
setProducerConfigCustomizer
@Deprecated public void setProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer) Deprecated.Set aProducerConfigCustomizer
for theProducerFactory
created inside the binder.- Parameters:
producerConfigCustomizer
- the producer config customizer
-
addProducerConfigCustomizer
-
addClientFactoryCustomizer(ClientFactoryCustomizer)
.