2017-02-28 69 views
2

我們使用ActiveMQ並定義了代理網絡(在我們的測試設置中爲2)。我們已經配置了中間商接AMQP連接,我們必須使「updateClusterClients」和「rebalanceClusterClients」像這樣:ActiveMQ代理網絡中的負載平衡

<transportConnector name="amqp" uri="amqp+ssl://0.0.0.0:5673?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;transport.transformer=jms" updateClusterClients="true" rebalanceClusterClients="true"/> 

此外,我們使用Qpid JMS建立我們的客戶。客戶端已使用故障轉移URL進行配置。

客戶端可以很好地相互溝通。另外,當我停止兩家經紀商中的一家時,他們轉向其餘的經紀商。

但是,當我重新啓動代理時,我期望看到一些客戶轉移到新的代理。不幸的是,我真正看到的是他們都保持與同一個經紀人的聯繫。

他們不平衡自己的原因可能是什麼? 另外,我希望客戶在最初連接兩個經紀人時分散。有什麼辦法可以實現這一點?

回答

1

ActiveMQ代理不會嘗試重新平衡代理網絡中的AMQP客戶端。可能有一種方法可以實現它,但它會對連接的每個AMQP客戶端的性質做出一些假設,例如它們都支持連接重定向,但並非全部都是。

直到定義了一個更好的機制,客戶端可以連接並通告它願意重定向,我認爲您不會看到ActiveMQ在AMQP客戶端上強制刪除連接以重新平衡它們。

代理能夠重新平衡OpenWire客戶端,因爲它知道與故障轉移傳輸連接的OpenWire客戶端將處理請求客戶端離開的連接控制命令,其中未與故障轉移連接的客戶端將忽略命令。

+0

我擔心這將是根本原因。所有的例子都是使用openwire,但是沒有明確說明這隻適用於openwire,所以我暗中希望我做錯了什麼。那麼,回到繪畫界吧。 – Pieter

+0

有人在做這些事情,所以希望不會丟失。 –

+0

我們可能會轉而使用openwire。 – Pieter