正如我们所知,如果在MessageListener的onMessage方法中抛出任何异常,JMS将再次尝试使用该消息,称为“Redelivery”。
但我很好奇的是它是如何实现这个功能的呢? onMessage方法是如何知道是否抛出任何异常?我知道答案可能是基本的java知识。但不幸的是,我仍然不知道它。
所以...是否有人可以澄清它?
答案 0 :(得分:1)
这是特定于特定JMS提供程序的。但是如果你的onMessage()方法抛出异常,那么调用你的onMessage()的JMS提供者的代码就可以捕获它,.e.g
try {
listener.onMessage(..);
} catch (Exception ex) {
//handle exception
}
如果发现异常,它可以采用策略重新传递消息。客户端可以将消息发送回JMS代理,告知代理消息传递失败,并让代理重新传递该消息。