Spring DefaultMessageListenerContainer不会停止或关闭

Spring DefaultMessageListenerContainer不会停止或关闭,spring,spring-jms,Spring,Spring Jms,我以编程方式在应用程序中创建、启动、停止和关闭SpringDefaultMessageListenerContainer,作为管理其生命周期的更重要服务的一部分 我还将这些DMLC注册为MBean,以便可以从JConsole管理它们 我无法“关闭”我的DMLC,这似乎是因为总有一个“活动”调用程序侦听器在我停止DMLC后不会消失。我理解“receiveTimeout=-1”问题,我的问题是5秒(5000毫秒)。所以,这不是问题所在 在调用“stop”操作后,我附加了一个JConsole DLMC

我以编程方式在应用程序中创建、启动、停止和关闭Spring
DefaultMessageListenerContainer
,作为管理其生命周期的更重要服务的一部分

我还将这些DMLC注册为MBean,以便可以从JConsole管理它们

我无法“关闭”我的DMLC,这似乎是因为总有一个“活动”调用程序侦听器在我停止DMLC后不会消失。我理解“receiveTimeout=-1”问题,我的问题是5秒(5000毫秒)。所以,这不是问题所在

在调用“stop”操作后,我附加了一个JConsole DLMC属性的屏幕截图。您可以看到Running=false,但“ActiveConsumerCount=1”。因此,shutdown()操作将挂起,并且永远不会完全关闭容器。如何以编程方式完全停止和关闭DMLC

Spring版本是4.1.5 ActiveMQ 5.10.1


接收超时值为5000时不应出现问题。我建议您启用跟踪级调试—您应该每5秒看到一次线程日志记录。如果不是,线程很可能被卡在上游的某个地方(侦听器中)

进行线程转储(例如使用jstack)以确认