天天看點

RabbitMQ的使用(一)- RabbitMQ服務安裝

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的使用(一)- RabbitMQ服務安裝
RabbitMQ的使用(一)- RabbitMQ服務安裝

rabbitmq-service指令如下,按需執行:

# 安裝RabbitMQ服務
rabbitmq-service install
# 啟動RabbitMQ服務
rabbitmq-service start
# 停止RabbitMQ服務
rabbitmq-service stop
# 删除RabbitMQ服務
rabbitmq-service remove
           
RabbitMQ的使用(一)- RabbitMQ服務安裝

啟用RabbitMQ管理插件

#cmd指令
rabbitmq-plugins.bat enable rabbitmq_management
           

然後在浏覽器通路位址http://localhost:15672/,輸入預設使用者名和密碼,都是guest

RabbitMQ的使用(一)- RabbitMQ服務安裝

可以看到剛剛已經安裝的RabbitMQ節點

一般我們都會先建立一個使用的user和virtual host,可以通過rabbitmqctl指令或者管理界面進行建立,我這裡就直接在界面操作了。

RabbitMQ的使用(一)- RabbitMQ服務安裝
RabbitMQ的使用(一)- RabbitMQ服務安裝

配置設定user對我們将要用到的virtual host的權限

RabbitMQ的使用(一)- RabbitMQ服務安裝

到這裡為止,就已經完成了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節點的一些資訊

RabbitMQ的使用(一)- 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服務監聽端口和管理插件監聽端口?

  1. 通過環境變量

    RABBITMQ_NODE_PORT

    可以修改RabbitMQ服務監聽端口
  2. 通過

    rabbitmq.config

    advanced.config

    添加如下配置,使用Erlang格式:
[
  {rabbit, [
      {tcp_listeners, [5675]}
    ]
  },
  {rabbitmq_management, [
      {listener, [{port, 15675}]}
    ]
  }
].
           
  1. rabbitmq.conf

    添加如下配置,使用sysctl格式:
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/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。