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

JMS是如何实现onMessage的重新传递功能的?,jms,Jms,如我们所知,如果MessageListener的onMessage方法抛出任何异常,JMS将再次尝试使用该消息,这称为“重新传递” 但我好奇的是它是如何实现这个特性的?onMessage方法如何知道是否抛出了任何异常?我知道答案可能是基本的java知识。但不幸的是,我仍然对此一无所知 所以。。。有人可以澄清吗?这是特定于某个JMS提供商的。但是如果您的onMessage()方法抛出异常,那么调用您的onMessage()的JMS提供程序的代码就可以捕获它 try { listener.on

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

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


所以。。。有人可以澄清吗?

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

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

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

您可能想查看OpenJMS,一个JMS规范的开源实现:谢谢,这非常有用!