【问题标题】:Spring DefaultMessageListenerContainer will not stop nor shutdownSpring DefaultMessageListenerContainer 不会停止也不会关闭
【发布时间】:2015-04-08 17:17:03
【问题描述】:

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

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

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

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

Spring 版本是 4.1.5 ActiveMQ 5.10.1

【问题讨论】:

    标签: spring spring-jms


    【解决方案1】:

    receiveTimeout 为 5000 应该没有问题。我建议您打开跟踪级调试 - 您应该每 5 秒看到一次线程日志记录。如果不是,则线程很可能卡在上游某处(在侦听器中)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多