From ff8a5da5fa89aff91eb99bb4159553dcdbe52337 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Fri, 21 Jun 2019 14:47:43 -0400 Subject: [PATCH] Fix `SmartLifecycle.stop(Runnable)` usage * Also remove redundant `stop(Runnable)` implementations which repeat a `default` one in the `SmartLifecycle` **Cherry-pick to 2.1.x & 2.0.x** # Conflicts: # spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/BrokerEventListener.java # spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java --- .../config/ListenerContainerFactoryBean.java | 3 +++ .../RabbitListenerEndpointRegistry.java | 23 +++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/ListenerContainerFactoryBean.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/ListenerContainerFactoryBean.java index 6e7c9ce2..853ac621 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/ListenerContainerFactoryBean.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/ListenerContainerFactoryBean.java @@ -629,6 +629,9 @@ public class ListenerContainerFactoryBean extends AbstractFactoryBean listenerContainers = getListenerContainers(); - AggregatingCallback aggregatingCallback = new AggregatingCallback(listenerContainers.size(), callback); - for (MessageListenerContainer listenerContainer : listenerContainers) { - try { - listenerContainer.stop(aggregatingCallback); - } - catch (Exception e) { - if (this.logger.isWarnEnabled()) { - this.logger.warn("Failed to stop listener container [" + listenerContainer + "]", e); + Collection containers = getListenerContainers(); + if (containers.size() > 0) { + AggregatingCallback aggregatingCallback = new AggregatingCallback(containers.size(), callback); + for (MessageListenerContainer listenerContainer : containers) { + try { + listenerContainer.stop(aggregatingCallback); + } + catch (Exception e) { + if (this.logger.isWarnEnabled()) { + this.logger.warn("Failed to stop listener container [" + listenerContainer + "]", e); + } } } } + else { + callback.run(); + } } @Override