From e45d33f9de595d7348f3b4695960cb26bd9255c0 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 2 May 2016 12:57:30 +0200 Subject: [PATCH] DefaultMessageListenerContainer immediately invokes stop callback when not running Issue: SPR-14233 --- .../jms/listener/DefaultMessageListenerContainer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java index 681ff857b81..f9f6479fc21 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java @@ -614,6 +614,12 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe @Override public void stop(Runnable callback) throws JmsException { synchronized (this.lifecycleMonitor) { + if (!isRunning() || this.stopCallback != null) { + // Not started, already stopped, or previous stop attempt in progress + // -> return immediately, no stop process to control anymore. + callback.run(); + return; + } this.stopCallback = callback; } stop();