RabbitMQ,消息隊列的一個中間件,這裡不打算展開介紹了。此文意在記錄工作中使用RabbitMQ時的過程及一些心得,大神可忽略。如有表述有誤,各路大神可在留言區進行指正,不勝感謝。
RabbitMQ的使用(一)- RabbitMQ服務安裝
作者:markjiang7m2
原文位址:https://www.cnblogs.com/markjiang7m2/p/12769627.html
官網位址:http://letyouknow.net
Windows系統中安裝RabbitMQ服務
安裝Erlang運作環境
RabbitMQ是采用Erlang實作的,是以需要安裝Erlang的運作環境。
安裝Erlang OTP,官網下載下傳https://www.erlang.org/downloads,版本自行選擇,我這裡用的是otp_win64_22.3.exe,下載下傳完可執行檔案輕按兩下運作安裝即可,這裡不展開。
安裝RabbitMQ
官網下載下傳https://www.rabbitmq.com/download.html,版本自行選擇,我這裡用的是rabbitmq-server-3.8.3.exe,也是直接安裝即可,這裡不展開
啟動RabbitMQ服務
打開cmd指令框,切換至C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.3\sbin目錄下,輸入rabbitmqctl status檢視狀态,如果未啟動,則可以通過rabbitmq-service進行啟動,或者到Windows服務啟動
rabbitmq-service指令如下,按需執行:
# 安裝RabbitMQ服務
rabbitmq-service install
# 啟動RabbitMQ服務
rabbitmq-service start
# 停止RabbitMQ服務
rabbitmq-service stop
# 删除RabbitMQ服務
rabbitmq-service remove
啟用RabbitMQ管理插件
#cmd指令
rabbitmq-plugins.bat enable rabbitmq_management
然後在浏覽器通路位址http://localhost:15672/,輸入預設使用者名和密碼,都是guest
可以看到剛剛已經安裝的RabbitMQ節點
一般我們都會先建立一個使用的user和virtual host,可以通過rabbitmqctl指令或者管理界面進行建立,我這裡就直接在界面操作了。
配置設定user對我們将要用到的virtual host的權限
到這裡為止,就已經完成了RabbitMQ服務的安裝了。
自定義配置
RabbitMQ 服務預設監聽的端口為
5672
,管理插件預設監聽的端口為
15672
,那如果我們要更改這些端口,應該怎麼做呢?
先貼出官網提供的文檔連結https://www.rabbitmq.com/configure.html
其實官網說得很詳細,我自己整理了一些我有用到的。
首先,RabbitMQ支援通過添加系統環境變量進行定制化配置。
RABBITMQ_NODE_PORT: 預設值為
5672
,RabbitMQ服務監聽端口
RABBITMQ_NODENAME: Windows系統下預設值為
rabbit@%COMPUTERNAME%
,RabbitMQ節點的名稱
RABBITMQ_SERVICENAME: 預設值為
RabbitMQ
,RabbitMQ服務名稱
添加/修改了系統環境變量後,需要重新安裝RabbitMQ服務才能生效,是重新安裝,不是重新開機,使用rabbitmq-service指令
再來看看我們建立的RabbitMQ節點的一些資訊
這裡就包含配置檔案路徑,資料庫檔案路徑,日志檔案路徑,預設路徑都是在
C:\Users\%UserName%\AppData\Roaming\RabbitMQ
目錄下,也是可以通過環境變量進行個性化定制
RABBITMQ_CONFIG_FILE: 配置檔案路徑,預設值為%APPDATA%\RabbitMQ\rabbitmq,官文也特别說明了,配置的時候是不帶檔案字尾名的
RABBITMQ_ADVANCED_CONFIG_FILE: Advanced配置檔案路徑,預設值為%APPDATA%\RabbitMQ\advanced,同上,不帶檔案字尾名
RABBITMQ_MNESIA_DIR: 資料庫檔案路徑,預設值為%APPDATA%\RabbitMQ$RABBITMQ_NODENAME
到了這裡,我在做實際操作的時候是有疑問的,因為出現了三個檔案分别是
rabbitmq.conf
,
rabbitmq.config
advanced.config
,特别是前面兩個,一開始我一度認為隻是官文不小心寫錯了,它們說的應該是同一個檔案,然而并不是,而且這兩個配置檔案的寫法也不一樣,我又仔細看了看上面連結的官文,自己也做了一下實驗,得到了下面的結論(如果有不對的,各路大神請指正)。
rabbitmq.config
為RabbitMQ 3.7.0之前使用的預設配置檔案,寫法使用的是Erlang格式,
rabbitmq.conf
是RabbitMQ 3.7.0版本開始使用的預設配置檔案,寫法使用的是sysctl格式。而
advanced.config
則是因為有一些配置無法或者很難用sysctl格式進行書寫的,那就寫在這個
advanced.config
檔案中,是以
advanced.config
的寫法使用的是Erlang格式。
舊版Erlang格式
[
{rabbit, [{ssl_options, [{cacertfile, "/path/to/ca_certificate.pem"},
{certfile, "/path/to/server_certificate.pem"},
{keyfile, "/path/to/server_key.pem"},
{verify, verify_peer},
{fail_if_no_peer_cert, true}]}]}
].
新版sysctl格式
ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true
然後,為了相容大家使用的舊版配置檔案,新版RabbitMQ也仍然相容
rabbitmq.config
配置,隻是在安裝服務的時候會有輸出提示讓大家盡快更新到新版。
那麼這個時候就會有一個問題了,上面我們的環境變量
RABBITMQ_CONFIG_FILE
是說不包含檔案字尾名的,那如果我兩個檔案同時存在,到底會是哪個配置檔案被優先使用呢?
- 如果
、rabbitmq.config
檔案都不存在,優先使用rabbitmq.conf
中的配置advanced.config
- 隻要
存在,優先使用rabbitmq.config
檔案,直接忽略rabbitmq.config
檔案advanced.config
-
不存在,而rabbitmq.config
rabbitmq.conf
同時存在,則這兩個檔案都會被使用advanced.config
如果我們指定
RABBITMQ_CONFIG_FILE
為其它檔案名或者其它路徑,情況也是參考如上。
這裡還有一個環境變量
RABBITMQ_CONF_ENV_FILE
,在Windows系統中對應的是一個批處理檔案,通常命名為
rabbitmq-env-conf.bat
,隻要我們配置了這個環境變量,那麼剛剛前面我們提到的環境變量,都可以在這個批處理檔案中添加,如下:
set RABBITMQ_CONFIG_FILE=D:\RabbitMQ\myrabbitmq.config
也是要注意的,記得重新安裝服務。
是以回到我們一開始的問題,怎麼修改RabbitMQ服務監聽端口和管理插件監聽端口?
- 通過環境變量
可以修改RabbitMQ服務監聽端口RABBITMQ_NODE_PORT
- 通過
rabbitmq.config
添加如下配置,使用Erlang格式:advanced.config
[
{rabbit, [
{tcp_listeners, [5675]}
]
},
{rabbitmq_management, [
{listener, [{port, 15675}]}
]
}
].
-
添加如下配置,使用sysctl格式:rabbitmq.conf
listeners.tcp.default = 5675
management.tcp.port = 15675
更多的配置項,可以檢視官文https://www.rabbitmq.com/configure.html#config-items、https://www.rabbitmq.com/management.html,按需配置即可。
附帶這三個檔案的example檔案
rabbitmq.config.example
rabbitmq.conf.example
advanced.config
總結
本文就記錄了我在windows系統安裝RabbitMQ服務的過程,沒有太多的幹貨,但也确實在百度上能找到關于自定義配置的說明并不多,說得也比較模糊,是以我這裡就給自己做了個筆記,下次再用的時候就不會迷路了,希望也能給各位提供一些有用資訊。
作者: markjiang7m2 出處: https://www.cnblogs.com/markjiang7m2/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。 |