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, Chris Bono
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.cloud.stream.binder.AbstractMessageChannelBinder
AbstractMessageChannelBinder.ErrorInfrastructure, AbstractMessageChannelBinder.PolledConsumerResources -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringKafka header for x-exception-fqcn.static final StringKafka header for x-exception-message.static final StringKafka header for x-exception-stacktrace.static final StringKafka header for x-original-offset.static final StringKafka header for x-original-partition.static final StringKafka header for x-original-timestamp.static final StringKafka header for x-original-timestamp-type.static final StringKafka header for x-original-topic.Fields inherited from class org.springframework.cloud.stream.binder.AbstractMessageChannelBinder
provisioningProviderFields inherited from class org.springframework.cloud.stream.binder.AbstractBinder
logger -
Constructor Summary
ConstructorsConstructorDescriptionKafkaMessageChannelBinder(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 TypeMethodDescriptionvoidaddClientFactoryCustomizer(ClientFactoryCustomizer customizer) voidaddConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer) voidaddProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer) protected org.springframework.integration.core.MessageProducercreateConsumerEndpoint(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.MessageHandlercreateProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel errorChannel) protected org.springframework.messaging.MessageHandlercreateProducerMessageHandler(ProducerDestination destination, ExtendedProducerProperties<KafkaProducerProperties> producerProperties, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageChannel errorChannel) protected voidcustomizeProducerMessageHandler(org.springframework.messaging.MessageHandler producerMessageHandler, String destinationName) protected org.springframework.messaging.MessageHandlergetErrorMessageHandler(ConsumerDestination destination, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties) protected org.springframework.integration.support.ErrorMessageStrategygetExtendedConsumerProperties(String channelName) getExtendedProducerProperties(String channelName) Class<? extends BinderSpecificPropertiesProvider>protected org.springframework.messaging.MessageHandlergetPolledConsumerErrorMessageHandler(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 voidpostProcessOutputChannel(org.springframework.messaging.MessageChannel outputChannel, ExtendedProducerProperties<KafkaProducerProperties> producerProperties) protected voidpostProcessPollableSource(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) voidsetClientFactoryCustomizer(ClientFactoryCustomizer customizer) Deprecated.voidsetConsumerConfigCustomizer(ConsumerConfigCustomizer consumerConfigCustomizer) Deprecated.voidsetDlqDestinationResolver(DlqDestinationResolver dlqDestinationResolver) voidsetDlqPartitionFunction(DlqPartitionFunction dlqPartitionFunction) voidsetExtendedBindingProperties(KafkaExtendedBindingProperties extendedBindingProperties) voidsetProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer) Deprecated.voidsetProducerListener(org.springframework.kafka.support.ProducerListener<byte[], byte[]> producerListener) voidsetRebalanceListener(KafkaBindingRebalanceListener rebalanceListener) voidsetupRebalanceListener(ExtendedConsumerProperties<KafkaConsumerProperties> extendedConsumerProperties, org.springframework.kafka.listener.ContainerProperties containerProperties) protected booleanuseNativeEncoding(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, setContainerCustomizer, setProducerMessageHandlerCustomizerMethods inherited from class org.springframework.cloud.stream.binder.AbstractBinder
afterPropertiesSet, applyPrefix, bindConsumer, bindProducer, buildRetryTemplate, constructDLQName, getApplicationContext, getBeanFactory, getBindingServiceProperties, getEvaluationContext, groupedName, setApplicationContextMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.cloud.stream.binder.Binder
bindConsumer, bindProducerMethods 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 aClientFactoryCustomizerfor theProducerFactoryandConsumerFactorycreated inside the binder.- Parameters:
customizer- the client factory customizer
-
addClientFactoryCustomizer
-
setRebalanceListener
-
setDlqPartitionFunction
-
setDlqDestinationResolver
-
getExtendedConsumerProperties
- Specified by:
getExtendedConsumerPropertiesin interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getExtendedProducerProperties
- Specified by:
getExtendedProducerPropertiesin interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getDefaultsPrefix
- Specified by:
getDefaultsPrefixin interfaceExtendedBindingProperties<KafkaConsumerProperties,KafkaProducerProperties>
-
getExtendedPropertiesEntryClass
- Specified by:
getExtendedPropertiesEntryClassin 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.
-
getBinderIdentity
- Specified by:
getBinderIdentityin interfaceBinder<org.springframework.messaging.MessageChannel,ExtendedConsumerProperties<KafkaConsumerProperties>, ExtendedProducerProperties<KafkaProducerProperties>>
-
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 -
customizeProducerMessageHandler
protected void customizeProducerMessageHandler(org.springframework.messaging.MessageHandler producerMessageHandler, String destinationName) -
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 aConsumerConfigCustomizerfor theConsumerFactorycreated inside the binder.- Parameters:
consumerConfigCustomizer- the consumer config customizer
-
addConsumerConfigCustomizer
-
setProducerConfigCustomizer
@Deprecated public void setProducerConfigCustomizer(ProducerConfigCustomizer producerConfigCustomizer) Deprecated.Set aProducerConfigCustomizerfor theProducerFactorycreated inside the binder.- Parameters:
producerConfigCustomizer- the producer config customizer
-
addProducerConfigCustomizer
-
addClientFactoryCustomizer(ClientFactoryCustomizer).