2016-04-30 153 views
0

我對ActiveMQ故障轉移協議有兩個問題。ActiveMQ故障轉移連接url

問題1:當我使用以下網址與嵌套它不連接到ActiveMQ。

failover:(tcp://192.168.1.111:61616)?nested.jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1 

問題2:以下網址工作正常。它也在第一次重新啓動時重新連接到ActiveMQ,但是當我第二次關閉ActiveMQ時,Java程序終止並且沒有任何異常。

failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1 

ActiveMQ的版本:5.10.0

參考:http://activemq.apache.org/failover-transport-reference.html

回答

0

嵌套前綴僅適用於應用到內部TCP選項有用/ SSL故障轉移URI內傳送,或者可能以代理使用多播發現等方式發現的地址。它們不適用於連接級別選項(例如以「jms。」開頭的選項)。如果設置爲你的第一個URI是正確如下:

failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000 

這是因爲jms.useAsyncSend選項適用的整個連接,而不是裏面的給定TCP運輸爲主的單一連接故障轉移 URI。

嵌套選項會之類的東西soTimeouttcpNoDelay

你並不需要嘗試重新設置嘗試無限,因爲這是,現在仍然是默認的前提,只有當你想將其限制爲某些固定次數的嘗試,您是否需要設置此選項。

如果您的應用程序在故障轉移重新連接週期期間關閉,那麼我的猜測是您依賴ActiveMQ庫來維護至少一個非守護線程以保持活動狀態,這是一個糟糕的假設,依靠任何第三方保持你的應用程序運行的一方通常是不好的做法,你應該讓自己的設計強制應用程序保持運行,直到你真的希望它關閉。

相關問題