2013-02-11 25 views
0

我有一種情況,當客戶端從JMS服務器斷開連接時,我想要存儲無法傳遞到JMS服務器的消息。我已閱讀了關於JMS提供程序的存儲和轉發功能,但我還沒有在客戶端看到有關此功能的任何討論。是否有任何提供者在客戶端實現中提供此功能?JMS生產者可以在與JMS服務器斷開連接時使用本地存儲並轉發嗎?

我曾考慮添加一個可以存儲和轉發消息到JMS服務器的進程內JMS提供程序。什麼是最輕量級的實現? HornetMQ,ActiveMQ?似乎這是一個非常小的用例,對於這種情況可能會有一個優化的實現,它包裝了另一個提供程序,並且比完整的嵌入式JMS提供程序的權重更輕。

回答

1

在客戶端存儲消息不是JMS標準功能,對於JMS服務器不可用的情況,您應該在客戶端添加一些處理。爲了減少發生這種情況的可能性,可以在同一臺機器上運行JMS服務器,甚至可以在與客戶機相同的JVM上運行JMS服務器。但是,連接丟失的可能性仍然很小,所以您仍然需要一些客戶端處理代碼。

您還需要一些東西,將消息從本地JMS服務器轉發到應該接收消息的消息。一些消息傳遞系統確實有特殊的功能來關注這個前兆(例如SonicMQ的動態路由架構) - 也許你可以通過ActiveMQ中的代理網絡(http://activemq.apache.org/networks-of-brokers.html)達到同樣的行爲 - 否則你可以通過ESB實現實現這種行爲,如Apache駱駝。

關於消息傳遞的實現,我不會堅持使用HornetQ,因爲它將被ActiveMQ替代爲JBoss標準消息傳遞提供程序。

+0

您能否爲您的聲明提供參考,HornetQ將被ActiveMQ替代爲JBoss標準消息傳遞提供程序?謝謝! – 2014-04-08 20:59:57

+0

這是我們3年前從RedHat同事那裏收到的一些信息 - 看着實際的產品,我會假設這種替換沒有發生,也許永遠不會...... – roundrobin 2014-04-22 05:19:00

相關問題