我有一个消息处理程序,它从 JMS 队列中使用并将结果发送到另一个 JMS 队列。消息处理程序位于 Spring DefaultMessageListenerContainer 中。
当容器关闭时,我希望它完成处理它已经消耗的任何请求并发送结果。同时,它不应该再消耗请求队列中的任何新消息。
目前,由于没有特殊的关闭规定安全ApplicationContext.registerShutdownHook(),容器会等待任何挂起的listernerMethod调用返回,但它不会将结果发送到响应队列。
确保将运行处理程序生成的响应发送到响应队列的适当方法是什么?
我认为要走的路必须经过DisposableBean
接口或@PreDestroy
注解。恕我直言,关键是不要让 Spring 关闭 DMLC,而是让一个了解当前“系统内部”消息的组件来完成此操作。这样,您就可以在等待当前处理的消息完成时停止侦听新消息。
使用depends-on
通过 bean 声明上的属性,您还可以定义要关闭的 bean 的顺序。红色更多关于这一点的Spring参考文档 http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-dependson.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)