2012-09-28 55 views
0

比方說,我有以下ActiveMQ的連接字符串:的ActiveMQ和隨機

故障轉移:(TCP:// BROKER1:61616,TCP:// broker2:61616)?隨機=真

我送就像幾千個向具有這種配置的Java生產者請求經紀人一樣。

有時候我注意到所有的消息最終都只有一個經紀人,而另一個沒有收到單個消息。

這是正常的行爲嗎?

在10次測試中,我讓我可能已經注意到這種行爲幾次了。在其他時候,這兩個經紀人都收到了這個消息。

randomize = true的工作原理是什麼?

我上http://activemq.apache.org/failover-transport-reference.html發現的唯一解釋是:「使用隨機算法來選擇的URI用於重新連接從提供的列表」

回答

0

在故障轉移運輸的隨機化標誌指示傳輸應該選擇隨機配置一個經過配置的經紀人URI連接(在您的情況下有兩種可供選擇的功能),一旦客戶端連接到其中一個經紀人,客戶端將保持愉快的連接並只發送消息給該經紀人,直到發生某些事情中斷連接,一旦連接中斷,客戶端將再次嘗試連接到這兩個經紀人中的一個,所以在你的情況下,單個生產者將其所有消息發送給一個經紀人就意味着它的工作就像它的預期也是。

+0

謝謝@Tim Bish的快速回復。有沒有辦法將經濟負擔分配給兩個經紀人,這樣一個人就不會全部收回?正如你所提到的,只要沒有中斷或連接問題,我認爲「randomize = true」,客戶端將使用它連接的代理。 – serverfaces

+0

查看Apache Camel,尤其是Load Balancer。 http://camel.apache.org/load-balancer.html –