JMS如何实现onMessage的重新传递功能?

时间:2013-01-05 01:57:39

标签: jms

正如我们所知,如果在MessageListener的onMessage方法中抛出任何异常,JMS将再次尝试使用该消息,称为“Redelivery”。

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

所以...是否有人可以澄清它?

1 个答案:

答案 0 :(得分:1)

这是特定于特定JMS提供程序的。但是如果你的onMessage()方法抛出异常,那么调用你的onMessage()的JMS提供者的代码就可以捕获它,.e.g

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

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