【问题标题】:How did JMS implement redelivery function of onMessage?JMS是如何实现onMessage的重投功能的?
【发布时间】:2012-12-19 12:26:24
【问题描述】:

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

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

那么……有没有人可以澄清一下?

【问题讨论】:

标签: jms


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2023-04-05
    • 2020-03-03
    相关资源
    最近更新 更多