0

众所周知,如果 MessageListener 的 onMessage 方法抛出任何异常,JMS 将尝试再次消费该消息,这称为“重新传递”。

但我很好奇的是它是如何实现这个功能的?onMessage 方法如何知道是否有任何异常被抛出?我知道答案可能是基本的java知识。但不幸的是,我仍然对此一无所知。

所以……有没有人可以澄清一下?

4

1 回答 1

1

这是特定于特定 JMS 提供程序的。但是,如果您的 onMessage() 方法抛出异常,则调用您的 onMessage() 的 JMS 提供程序的代码可以捕获它,例如

try {
   listener.onMessage(..);
} catch (Exception ex) {
   //handle exception
}

如果捕获到异常,它可以采用重新传递消息的策略。客户端可以将消息发送回 JMS 代理,告诉代理消息传递失败,并让代理重新传递该消息。

于 2013-01-05T02:22:49.903 回答