diff --git a/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java b/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java index d55a0fd3..e83c8cae 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java @@ -248,16 +248,21 @@ public class KafkaListenerEndpointRegistry implements DisposableBean, SmartLifec @Override public void stop(Runnable callback) { - Collection listenerContainers = getListenerContainers(); - AggregatingCallback aggregatingCallback = new AggregatingCallback(listenerContainers.size(), callback); - for (MessageListenerContainer listenerContainer : listenerContainers) { - if (listenerContainer.isRunning()) { - listenerContainer.stop(aggregatingCallback); - } - else { - aggregatingCallback.run(); + Collection listenerContainersToStop = getListenerContainers(); + if (listenerContainersToStop.size() > 0) { + AggregatingCallback aggregatingCallback = new AggregatingCallback(listenerContainersToStop.size(), callback); + for (MessageListenerContainer listenerContainer : listenerContainersToStop) { + if (listenerContainer.isRunning()) { + listenerContainer.stop(aggregatingCallback); + } + else { + aggregatingCallback.run(); + } } } + else { + callback.run(); + } } @Override diff --git a/spring-kafka/src/main/java/org/springframework/kafka/listener/AbstractMessageListenerContainer.java b/spring-kafka/src/main/java/org/springframework/kafka/listener/AbstractMessageListenerContainer.java index ca84cdaa..7d50e3e1 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/listener/AbstractMessageListenerContainer.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/listener/AbstractMessageListenerContainer.java @@ -264,6 +264,9 @@ public abstract class AbstractMessageListenerContainer if (isRunning()) { doStop(callback); } + else { + callback.run(); + } } }