2013-01-05 32 views
0

正如我們所知,如果在MessageListener的onMessage方法中引發任何異常,JMS將嘗試再次使用該消息,稱爲「Redelivery」。JMS如何實現onMessage的重新傳遞功能?

但是我很好奇的是它是如何實現這個功能的? onMessage方法如何知道是否拋出了任何異常?我知道答案可能是一個基本的Java知識。但不幸的是,我仍然不知道它。

那麼......有沒有人可以澄清它?

+0

您可能想要查看OpenJMS,這是JMS規範的開源實現:http://sourceforge.net/projects/openjms – derekerdmann

+0

謝謝,這非常有幫助! –

回答

1

這是特定於特定的JMS提供者。但是如果你的onMessage()方法拋出一個異常,調用您的onMessage()只需抓住它,.eg

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

如果一個異常被捕獲,它可以使用的策略JMS提供者的代碼重新傳遞消息。客戶可以將消息發送回JMS代理,告訴代理消息傳遞失敗,並讓代理重新傳遞該消息。