跳至主要内容

🧣 連線容錯 Failover URI

本章節解析 ActiveMQ 客戶端端的連線容錯機制。透過 Failover URI,應用程式可在 Broker 故障或網路中斷時自動切換到備援節點,對開發者透明地完成重連。

環境

1. Failover URI 結構

failover:(tcp://host1:61616,tcp://host2:61616)?參數=值

2. 常用參數

參數說明建議值
randomize是否隨機選擇 Brokerfalse(按順序優先)
initialReconnectDelay首次重連延遲(毫秒)100
maxReconnectDelay最大重連延遲(毫秒)30000
maxReconnectAttempts最大重連次數,-1 為無限-1
backup是否預先建立備援連線true
timeout連線超時(毫秒)3000

3. Java 客戶端範例

String brokerUrl = "failover:(tcp://192.168.1.10:61616,tcp://192.168.1.11:61616)"
+ "?randomize=false"
+ "&initialReconnectDelay=100"
+ "&maxReconnectAttempts=-1"
+ "&backup=true";

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(brokerUrl);
factory.setUserName("admin");
factory.setPassword("admin1pwd");

Connection connection = factory.createConnection();
connection.start();

4. Spring Boot 設定

spring:
activemq:
broker-url: failover:(tcp://192.168.1.10:61616,tcp://192.168.1.11:61616)?randomize=false&backup=true
user: admin
password: admin1pwd

5. 與 Broker 端 HA 的搭配

架構客戶端 FailoverBroker 端
單機 + 備援 IP指向主備兩個 IP手動切換或 DNS
Master-Slave指向 Master 與 Slave共享 KahaDB / JDBC
Network of Brokers指向多個 Broker訊息橋接

6. 常見問題與排查

現象可能原因處理方式
切換後訊息重複非持久化訊息在切換時重投關鍵訊息設為持久化
重連失敗備援 Broker 未啟動確認 Slave 狀態與網路
連線抖動initialReconnectDelay 太小適度增大並啟用指數退避
認證失敗備援節點帳密不同統一兩端認證設定

7. 與其他文章的關聯