1. 程式人生 > >win10下修改rabbitmq預設埠

win10下修改rabbitmq預設埠

因為業務需要斷網操作,之前弄了一臺Windows伺服器,並使用的是activemq訊息佇列,用於特殊業務的中轉,現在外部系統重構後需要採用的是rabbitmq,所以Windows伺服器上需要支援rabbitmq,於是下載安裝,建立角色,授權,一通搞,單個啟動rabbitmq時沒有任何問題,但是activemq切啟動報端口占用,閃退。經過排查發現activemq使用的預設協議埠5672,和rabblitmq的預設埠衝突了,在不影響業務的情況下,只能修改rabbltmq的tcp監聽埠。各種嘗試有報錯,有不生效,最後成功解決問題,記錄如下:

1. rabbitmq.config預設是沒有生成的,只有一個rabbitmq.config.example,需要自己建一個,要麼就copy一個改下名字,要麼就是把.example去掉 。

2. rabbitmq.config目錄並非安裝目錄下面的etc,預設是在 C:\Users\%USERNAME%\AppData\Roaming\RabbitMQ 下,這一點在安裝目錄下面的etc目錄下的readme.txt中有說明。 說明如下:

In this directory you can find an example configuration file for RabbitMQ.

Note that this directory is *not* where the real RabbitMQ
configuration lives. The default location for the real configuration
file is %APPDATA%\RabbitMQ\rabbitmq.config.

%APPDATA% usually expands to C:\Users\%USERNAME%\AppData\Roaming or similar.

3. rabbitmq.config的資料格式類似json,但並非json。其中埠號是以下這行 %% {tcp_listeners, [5672]}, 很多人以為只需把 %% 拿掉儲存就OK了。但其實後面還有一個小逗號,需要注意,如果當前大節點下面就這一個節點,這個逗號是必須去掉的。 如果這是json格式,後面的小逗號是無關緊要的。但可惜,這是erlang。

4. 其次,修改了配置檔案後,不能只是重啟服務。我就吃了這個虧,又是重啟服務又是重啟伺服器還是沒效果,而需要到安裝目錄下面的sbin執行三個步驟,cmd視窗必須是管理員身份執行。

執行 rabbitmq-service.bat stop 停止服務

執行 rabbitmq-service.bat install 重新安裝服務,這時才會重新載入config檔案

執行 rabbitmq-service.bat start 開啟服務

5. . 如果config有問題,服務是啟動不起來的,而且錯誤資訊也是很難發現的,我最先就是那個埠後面那個逗號沒有去掉,結果啟動出錯,又不知道錯誤原因,很難排查。

6. 所有config的修改,都必須修改好後,執行第4步

7. 如果是通過環境變數設定config所在目錄,一定要注意,環境變數 RABBITMQ_CONFIG_FILE, 這個變數並非是config所在目錄,也不是config的全路徑。 如你想設定config為 D:\RabbitMQ\rabbitmq.config,則 RABBITMQ_CONFIG_FILE=D:\RabbitMQ\rabbitmq ,因為rabbitmq會自動在變數值後面加上.config字尾,這個在rabbitmq的官方文件上有說明。

8.如果需要知道更多的配置內容,請參看這個翻譯博文【傳送門】