【问题标题】:How to gracefully shut down a Spring JMS MessageListenerAdapter如何优雅地关闭 Spring JMS MessageListenerAdapter
【发布时间】:2010-11-04 21:48:55
【问题描述】:

我有一个消息处理程序,它使用 JMS 队列并将结果发送到另一个 JMS 队列。消息处理程序位于 Spring DefaultMessageListenerContainer 中。 当容器关闭时,我希望它完成处理它已经使用的任何请求并发送结果。同时,它不应再消耗请求队列中的任何新消息。

目前,在没有特殊关闭规定的情况下,安全的 ApplicationContext.registerShutdownHook() 容器会等待任何挂起的listernerMethod 调用返回,但它不会将结果发送到响应队列。

确保将运行处理程序产生的响应发送到响应队列的适当方法是什么?

【问题讨论】:

    标签: java spring jms


    【解决方案1】:

    我认为要走的路必须通过DisposableBean 接口或@PreDestroy 注释。恕我直言,关键是不要让 Spring 关闭 DMLC,而是让一个知道当前“系统内部”消息的组件完成此操作。这样您就可以在等待当前处理的消息完成时停止侦听新消息。

    在 bean 声明中使用 depends-on 属性,您还可以定义要关闭的 bean 的顺序。在Spring reference documentation 中了解更多信息。

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 2014-12-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2019-09-26
      • 1970-01-01
      相关资源
      最近更新 更多