我们正在使用spring-jms从队列中接收消息。但有时我们遇到连接问题(侦听器线程上的下游JDBC),我们在池中没有足够的连接。所以我们想再次重试该消息,如果我们仍然没有连接,那么我们将拒绝该消息
我们正在错误处理程序中尝试这个,并且错误处理程序实例是注入spring默认消息侦听器容器,但我不知道如何访问消息对象,因为它只提供Throwable对象。
有谁知道如何访问实际的邮件对象?
答案 0 :(得分:1)
将消息传递给错误处理程序的唯一方法是捕获侦听器中的异常,并将消息作为属性添加到新异常(可能将原始异常包含在原因中)。
您可能会发现在用户代码中处理异常更加简单。
如果您使用的是消息驱动的POJO而不是MessageListener
;你必须继承MessageListenerAdapter
并在try / catch块中调用super.onMessage()
。
修改强>
在任何情况下,回滚后都会调用ErrorHandler
,因此无法更改该行为。