文章目錄
使用 RabbitMQ.Client 連線至 RabbitMQ 出現 BrokerUnreachableException
因為專案需要就開始動手來嘗試各種 MQ 的比較,第一個開始測試的就是 RabbitMQ,原本打算先做幾個基本測試:
- 試打訊息進 queue
- 讓 RabbitMQ 分派訊息給其他 client
- client 正確接受訊息
完成基本測試後就可以紀錄一下過程中使用的工具與方法,想不到第一步就卡住XD 連線一直出現問題,所以第一篇 RabbitMQ 的紀錄文反而是 debug
問題發生原因
RabbitMQ 使用 virtual host 來管理用戶權限,virtual host 可以視為一種 namespace 的概念,預設的 virtual host 是 /
,新增 user 預設不開放存取權限。
確認方式
- 登入管理後台:
http://localhost:15672/
Admin –> Users –> 檢查 user 是否可以 access 指定的 virtual host
錯誤訊息
訊息內容
BrokerUnreachableException: None of the specified endpoints were reachable
錯誤截圖
解決方式
設定 user 有存取指定 virtual hosts 的權限
- 開啟
RabbitMQ Command Prompt (sbin dir)
(安裝 RabbitMQ 時預設裝進來的工具) 設定權限語法
rabbitmqctl set_permissions -p {virtual host} {userName} "." "." ".*"
範例:開放
/
的權限給yowko
rabbitmqctl set_permissions -p / yowko "." "." ".*"
設定完成
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。