我始終打開JMS連接,因爲我有一個MessageListener。是否需要維護長期居住的JMS連接?
是否需要儘量減少使用長壽命JMS連接維護應用程序的常見需求?
我在想一些嘗試從一些可能的常見的衆所周知的故障中恢復的問題,比如臨時連接故障。
我始終打開JMS連接,因爲我有一個MessageListener。是否需要維護長期居住的JMS連接?
是否需要儘量減少使用長壽命JMS連接維護應用程序的常見需求?
我在想一些嘗試從一些可能的常見的衆所周知的故障中恢復的問題,比如臨時連接故障。
標準JMS規範中沒有任何內容可以確保連接問題對應用程序不可見。也許有一些供應商將這作爲延伸(正如James Strachan所建議的那樣)。
如果您想要一個不依賴於供應商擴展的健壯JMS客戶端,您需要處理錯誤並重新連接。見Reconnecting JMS listener to JBossMQ(儘管標題不是JBossMQ特定的)。
你將需要處理兩種情況:你和JMS服務器之間
我建議安裝一個本地JMS服務器(任何都可以),將您的應用連接到它並停止服務器。這會給你錯誤信息期望情況#2。然後用MockRunner編寫一個單元測試,以確保您的錯誤處理是正確的。
一個很好的JMS提供者會處理網絡中斷,如掉線插座或消息代理故障轉移或重新啓動正。例如這裏是你如何enable automatic reconnection在Apache ActiveMQ。
重新創建所有JMS資源(連接,會話,生產者,使用者)往往是一件非常痛苦的事情 - JMS提供者更容易爲您做到這一點。
如果你必須使用它可以不支持此功能的提供者 - 要麼通過交換,或使用Spring JMS輔助類,可以爲你做一些這方面。