跳至主要内容

🧣 Network of Brokers

本章節解析 ActiveMQ 的 Network of Brokers 架構。透過 networkConnector,多個獨立 Broker 之間建立訊息橋接,實現跨機房的訊息路由與地理分散部署。

環境

1. 與 Master-Slave 的差異

項目Master-SlaveNetwork of Brokers
關係主備、共享儲存對等、各自獨立儲存
目的高可用地理分散、擴展
訊息同一份資料橋接複製或轉發

2. 基本設定

2.1 Broker A(發起連線方)

  • 檔案: /conf/activemq.xml
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-a" dataDirectory="${activemq.data}">
<networkConnectors>
<networkConnector name="to-broker-b"
uri="static:(tcp://broker-b-host:61616)"
duplex="false"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
</transportConnectors>
</broker>

2.2 關鍵屬性

屬性說明
duplextrue 雙向橋接,false 單向
dynamicOnly只橋接有 Consumer 的目的地
conduitSubscriptions合併訂閱以減少流量

3. 目的地過濾

限制只橋接特定 Queue / Topic:

<networkConnector name="to-broker-b"
uri="static:(tcp://broker-b-host:61616)">
<filteredDestination queue="ORDER.>" />
<filteredDestination topic="EVENT.>" />
</networkConnector>

4. 雙向橋接

<networkConnector name="bridge-b"
uri="static:(tcp://broker-b-host:61616)"
duplex="true"/>

雙向模式下,兩端 Broker 的訊息互相同步,需注意避免迴圈(Broker 預設有迴圈偵測)。

5. 常見問題與排查

現象可能原因處理方式
訊息未橋接到遠端遠端無 Consumer啟用 dynamicOnly 或確認訂閱
訊息迴圈雙向橋接配置錯誤檢查 duplex 與過濾規則
延遲高大量目的地同步使用 filteredDestination 限縮
連線反覆斷開網路或防火牆確認 61616 雙向可連通

6. 與其他文章的關聯