From 2406fe5237c64c3ba7b3476bd6044e204b75821d Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 7 Mar 2018 18:14:28 -0500 Subject: [PATCH] Event Publisher Polishing Now that the abstract binder makes its event publisher available to subclasses, use it, if present, instead of the application context. In most cases, they will be the same object, but the user might override the publisher. Resolves #336 --- .../stream/binder/kafka/KafkaMessageChannelBinder.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java b/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java index 3cf863f04..906e2b176 100644 --- a/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java +++ b/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java @@ -371,8 +371,14 @@ public class KafkaMessageChannelBinder extends }; messageListenerContainer.setConcurrency(concurrency); // these won't be needed if the container is made a bean - messageListenerContainer.setApplicationEventPublisher(getApplicationContext()); + if (getApplicationEventPublisher() != null) { + messageListenerContainer.setApplicationEventPublisher(getApplicationEventPublisher()); + } + else if (getApplicationContext() != null) { + messageListenerContainer.setApplicationEventPublisher(getApplicationContext()); + } messageListenerContainer.setBeanName(destination.getName() + ".container"); + // end of these won't be needed... if (!extendedConsumerProperties.getExtension().isAutoCommitOffset()) { messageListenerContainer.getContainerProperties() .setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL);