【发布时间】:2011-01-12 02:29:46
【问题描述】:
如果我使用Spring 的DefaultMessageListenerContainer 来接收JMS 消息,即使我将sessionAcknowledgeMode 设置为2,我也不会重新传递JMS 消息。
如果在我的 JavaBean 的 onMessage() 中出现 RuntimeException,则消息不会在 JMS 提供程序 (ActiveMQ) 中得到确认,它在队列中保持挂起状态。但它永远不会重新交付,我认为这是由于 Spring 从未调用 session.recover() 造成的,根据 ActiveMQ's documentation 的要求,这是重新交付发生所必需的。
谁能告诉我如何配置DefaultMessageListenerContainer 以在出现RuntimeExceptions 的情况下调用session.recover()?
最好的问候,
马丁
【问题讨论】:
-
我遇到了类似的问题。 SessionAwareListener 会抛出意外的运行时异常,但 DMLC 会在停止之前重试消息大约 32 次。不确定如何设置重试次数...?
标签: java spring exception-handling jms activemq