【发布时间】:2011-02-07 02:07:52
【问题描述】:
我们有一个用于异步接收消息的 Spring JMS 消息侦听器容器。使用 DefaultMessageListenerContainer 并处于 sessionTransacted 模式。我了解处于 sessionTransacted 模式意味着如果出现异常,消息将被放回队列中。但是,即使接收器(选择消息的)崩溃或只是运行它的机器断电,我如何确保消息不会从队列中删除?
一开始我以为 CLIENT_ACKNOWLEDGE 确认模式应该可以救我,但apparently 并非如此,Spring 无论如何都会调用 .acknowledge()。
所以这是我的问题,我如何保证交货?使用自定义 MessageListenerContainer?使用事务管理器?
【问题讨论】: