.NET RabbitMQ Client ConnectionFactory 屬性配置說明

在配置 RabbitMQ Client 端時,可以透過 ConnectionFactory 設定多種屬性來控制連線行為
本篇將逐一說明 RabbitMQ 連線 ConnectionFactory 每個屬性用途

基本配置

HostName:RabbitMQ 伺服器主機名稱或 IP 地址
Port:RabbitMQ 連接埠號 (預設: 5672)
UserName:帳號
Password:密碼

VirtualHost (預設: /)

功能

VirtualHost 可想像成是 RabbitMQ 中的「命名空間」
目的是分隔不同的消息隊列,達到隔離資源、提升安全性
必須搭配Server端配置名稱,所以不能隨便亂輸入

應用

最常的應用就是實現多租戶架構或是多環境架構,例如:

  • 測試環境使用 test_vhost
  • 生產環境使用 prod_vhost

每個 VirtualHost 是一個邏輯隔離的環境,擁有自己獨立的隊列、交換機、綁定及許可權
RabbitMQ 管理員可以為每個 VirtualHost 配置資源限制(如:連接數、內存、磁碟使用量),以避免單個環境或租戶過度使用系統資源

AutomaticRecoveryEnabled (自動重連機制)

功能

當 RabbitMQ 與客戶端的連線因網絡問題或伺服器故障中斷時
啟用該屬性可以讓客戶端自動嘗試重新連線,無需手動干預

相依屬性

NetworkRecoveryInterval:可配置重試間隔秒數 (預設為 5 秒)

注意事項

若未啟動該屬性,自動重連機制將無效

NetworkRecoveryInterval (自動恢復連線時的重試間隔秒數)

功能

當啟用了 AutomaticRecoveryEnabled 後,NetworkRecoveryInterval 決定了重試連線的間隔秒數

相依屬性

AutomaticRecoveryEnabled 屬性需啟動,該配置才有作用

RequestedHeartbeat (心跳機制)

功能

客戶端和伺服器之間的一個協議層機制,用於檢測連線的健康狀態
其主要功能是通過定期交換心跳信號(heartbeat frame),確認雙方仍然可用並保持連接
若在指定時間內未收到心跳信號,則判定連接已中斷

注意事項

心跳間隔時間由最小值決定,若伺服器配置為 15 秒,客戶端配置為 5 秒,最終採用 5 秒
若設置為 0,則禁用心跳機制(不建議)

相依屬性

必須啟用 AutomaticRecoveryEnabled,該配置才會生效

DispatchConsumersAsync (非同步的訊息分派給消費者)

功能

控制是否以非同步方式分派消息給消費者
當設置為 true 時,可使用基於 async/await 的非同步消息處理邏輯
適合處理 I/O 密集型操作,例如: 調用外部 API 或查詢資料庫

TopologyRecoveryEnabled 自動拓撲恢復

功能

拓撲 (Topology) 包括:佇列(Queue)、交換器(Exchange)、綁定(Binding)
啟用該屬性後,RabbitMQ 會在連線恢復後,自動重建之前的佇列、交換器及綁定關係

選項

true:自動重建拓撲,讓系統快速恢復正常運作
false:需手動重建拓撲,適合自定義拓撲行為的場景

相依屬性

必須啟用 AutomaticRecoveryEnabled,該配置才會生效

RabbitMQ ConnectionFactory 配置直接影響消息隊列的連線穩定性與性能
每一個屬性配置建議依照自身情境或業務需求,進行配置
特別是在分散式系統或高併發場景中,啟用適當的自動恢復與心跳機制,可顯著提升系統的穩定性

訂閱
通知
guest
0 留言
預約回饋
查看所有留言