亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

RabbitMQ 入門教程

RabbitMQ 簡介
RabbitMQ 簡介
首頁 慕課教程 RabbitMQ 入門教程 RabbitMQ 入門教程 RabbitMQ 基礎核心配置文件介紹

RabbitMQ 基礎核心配置文件介紹

1. 前言

Hello,大家好。今天會為同學們介紹 RabbitMQ 中的基礎核心配置文件。這些基礎核心配置文件是保證我們的 RabbitMQ 服務正常運行的基礎,如果我們沒有根據實際情況去配置這些文件,那么我們的 RabbitMQ 服務可能就不會按照我們計劃的那樣去運行,也就不能達到我們預期的結果。

理解并掌握 RabbitMQ 基礎核心配置文件的配置方法,以及基礎核心配置屬性,是靈活配置和應用 RabbitMQ 服務的前提,我們只有掌握了 RabbitMQ 的配置手段之后,我們才能在不同場景去應用 RabbitMQ 。

本節主要內容:

  • RabbitMQ 環境相關配置文件及參數;

  • RabbitMQ 基礎配置文件及參數;

  • RabbitMQ 額外配置文件及參數。

2. RabbitMQ 環境相關配置文件及參數

2.1 文件定義與路徑

RabbitMQ 的環境配置文件,主要是用來對 RabbitMQ 服務所運行的環境進行配置,該配置文件根據所處的平臺設置了不同的文件名稱,在 Windows 平臺中,該配置文件被稱為 rabbitmq-env-conf.bat ,在 Centos 平臺中,該配置文件被稱為 rabbitmq-env.conf 。

如果同學們在安裝 RabbitMQ 服務時,均采用了默認安裝的方式,那么在 Windows 平臺中,rabbitmq-env-conf.bat 配置文件的所在目錄就位于 RabbitMQ 服務的安裝目錄下的 sbin 目錄中;在 Centos 平臺中,rabbitmq-env.conf 配置文件的所在目錄就位于 /usr/lib/rabbitmq/bin 目錄下。 如果大家在安裝 RabbitMQ 服務時,采用了自定義安裝的方式,那么請到各自對應的目錄下去尋找該配置文件。

Tips: 本著簡潔明了的原則,本節所介紹的 RabbitMQ 配置文件均以 Centos 平臺下的為例,這和 Windows 平臺大同小異,并沒有其他的特殊之處。

2.2 核心配置屬性介紹

RABBITMQ_NODE_IP_ADDRESS 屬性

RABBITMQ_NODE_IP_ADDRESS 屬性是用來描述可訪問 RabbitMQ 服務的主機地址,具體到我們的工作當中,就是允許哪些應用程序訪問我們的 RabbitMQ 服務。

該屬性默認值為空字符串,表示任何應用程序都可以訪問我們的 RabbitMQ 服務。那么,如果我們只允許一個應用程序來訪問我們的 RabbitMQ 服務,我們應該怎么來配置呢?如下代碼所示:

// 假定我們的應用程序所在地址為 192.165.22.123
RABBITMQ_NODE_IP_ADDRESS="192.165.22.123"

通過上述代碼,我們可以知道,如果我們想指定應用程序訪問我們的 RabbitMQ 服務,那么我們只需要將我們應用程序所在地址作為字符串的形式,來發賦給 RABBITMQ_NODE_IP_ADDRESS 屬性即可。

RABBITMQ_NODE_PORT 屬性

RABBITMQ_NODE_PORT 屬性是用來描述 RabbitMQ 服務所使用的網絡端口,即 RabbitMQ 服務在服務器上所綁定的服務端口。

該屬性默認值為 5672 ,即 RabbitMQ 服務默認使用 5672 端口。如果我們想改變 RabbitMQ 服務所綁定的端口,我們只需要按照上述屬性的設置步驟即可,如下代碼所示:

// 假定我們需要將 RabbitMQ 的服務綁定到 6672 端口上
RABBITMQ_NODE_PORT="6672"

RABBITMQ_NODENAME 屬性

RABBITMQ_NODENAME 屬性是用來描述 RabbitMQ 服務當前所在節點的名稱。

該屬性的默認值是根據不同操作系統來定義的,在 Windows 系統中,RABBITMQ_NODENAME 屬性的默認值為 rabbit@%COMPUTERNAME% ,即我們電腦的名稱;在 Centos 系統中,RABBITMQ_NODENAME 屬性的默認值為 rabbit@$HOSTNAME ,即我們主機的名稱。

同樣地,如果我們想自定義 RabbitMQ 服務的節點名稱,我們可以這樣來做:

// 假定我們需要將當前 RabbitMQ 服務所在節點的名稱修改為 rabbitmq-server-one
RABBITMQ_NODENAME="rabbitmq-server-one"

Tips: 一般來說,如果我們的 RabbitMQ 服務只有一個節點,是不會修改 RabbitMQ 的服務名稱的,如果我們的 RabbitMQ 服務存在多個節點,即 2個及 2 個以上節點時,我們需要根據每個 RabbitMQ 所起到的服務來為不同的 RabbitMQ 節點設置服務名稱。

RABBITMQ_USE_LONGNAME 屬性

RABBITMQ_USE_LONGNAME 屬性是是否啟用 RabbitMQ 全量名稱的開關,當我們開啟后,我們每個 RabbitMQ 節點的名稱以及其他可命名的地方都會采用完整名稱規則的方式來進行命名。

該屬性的默認值為 false ,即不使用 RabbitMQ 全量名稱規則來命名,只是用默認的正常規則來進行命名,如果我們需要打開 RabbitMQ 全量命名,我們可以這樣打開:

RABBITMQ_USE_LONGNAME=true

Tips: 在實際工作中,很少會使用 RabbitMQ 的全量命名規則,因為這種命名策略生成的名稱非常長,且不易讀,不利于我們對 RabbitMQ 服務節點的維護,當然,如果我們必須要使用這種命名規則,也是無可厚非的。

RABBITMQ_SERVICENAME 屬性

RABBITMQ_SERVICENAME 屬性用來描述 RabbitMQ 服務的服務名稱。

該屬性只對 Windows 系統起作用,其默認值為 RabbitMQ ,在 Centos 系統中,RabbitMQ 的服務名稱不可修改,統一被命名為 rabbitmq-server.service 。

那么,在 Windows 系統中,如果我們想修改 RabbitMQ 的服務名稱,我們只需要找到 services.msc 文件,并以文本文檔的類型打開它,在里面找到 RABBITMQ_SERVICENAME 屬性,將它的值修改成我們想要的名稱即可,如下代碼所示:

// 假定我們需要修改服務名稱為 rabbitmq-server
RABBITMQ_SERVICENAME="rabbitmq-server"

RABBITMQ_CONSOLE_LOG 屬性

RABBITMQ_CONSOLE_LOG 屬性用來規定 RabbitMQ 服務所生成的服務日志的路徑,如果沒有設置該屬性,則 RabbitMQ 不會生成任何服務日志。

該屬性的默認值為空,即默認沒有規定 RabbitMQ 服務日志的生成位置。

如果我們想指定 RabbitMQ 服務所生成的位置,我們只需要將路徑賦值給 RABBITMQ_CONSOLE_LOG 屬性即可,如下代碼所示:

RABBITMQ_CONSOLE_LOG=/usr/temp/rabbtmq-log/one.log

RABBITMQ_DIST_PORT 屬性

RABBITMQ_DIST_PORT 屬性用來描述 RabbitMQ 服務節點間進行通信的端口號。

該屬性的默認值為 RABBITMQ_NODE_PORT + 20000 。

修改方式如下代碼所示:

// 假定我們需要修改端口號為 RABBITMQ_NODE_PORT + 20001
RABBITMQ_DIST_PORT=RABBITMQ_NODE_PORT + 20001

Tips: 1. 在實際工作中,一般不會刻意去修改 RabbitMQ 服務節點間進行通信的端口號,除非我們的應用程序所綁定的端口與該端口發生了沖突。
2. 修改 RabbitMQ 服務節點間通信端口號我們可以采用一種自增的原則,即我們不要修改 RABBITMQ_NODE_PORT ,我們修改的是后面的 20000 ,將 20000 進行一次累加即可。
3.rabbitmq-env.conf 文件中的所有屬性在發生變化之后,都需要重啟我們的 RabbitMQ 服務才能生效。

3. RabbitMQ 基礎配置文件及參數

3.1 文件定義與路徑

RabbitMQ 基礎配置文件主要用來對 RabbitMQ 服務本身做一些配置,從而來滿足我們的業務需求。同樣地,該配置文件也是根據不同的操作系統來進行命名的,在 Windows 系統中,該配置文件被稱為 rabbitmq-conf.bat , 在 Centos 系統中,該配置文件被稱為 rabbitmq.conf 。

在 Centos 系統中,該配置文件默認的路徑為 /etc/rabbitmq/ ,在 Windows 系統中,該配置文件默認的路徑為 %APPDATA%\RabbitMQ ,其中,APPDATA 指的是 RabbitMQ 中數據文件所在的路徑。

3.2 核心配置屬性介紹

listeners 屬性

listeners 屬性是 AMQP 協議用來監聽 tcp 端口的監聽器,完整屬性名稱為 listeners.tcp.default 。

該屬性的默認值為 5672 ,即 AMQP 協議默認監聽 5672 端口。

修改方式同上,這里不再贅述。

log.file.level 屬性

log.file.level 屬性用來定義 RabbitMQ 服務日志的打印級別,一共有 4 種日志打印級別,分別是 error 、warning 、info 、debug,這四種日志級別根據這個順序互相包含,即 debug 級別的日志會打印出 error 、warning、info、debug 的所有數據。

該屬性默認值為 info ,即默認的服務日志打印級別為 info 級別,會打印包括 error 、warning 、info 的所有數據。

修改方式同上,這里不再贅述。

channel_max & channel_operation_timeout 屬性

channel_max 屬性是用來規定具體的一個頻道與客戶端的最大連接數量,該數量的默認值為 2047 。

channel_operation_timeout 屬性是用來規定獲取具體的一個頻道連接的最大超時時間,該時間默認值為 15000 毫秒。

修改方式同上,這里不再贅述。

max_message_size & heartbeat & default_vhost 屬性

max_message_size 屬性用來規定一條消息的最大占用空間,該屬性的單位為比特,默認值為 134217728 ,最大值為 536870912 。

heartbeat 屬性用來規定 RabbitMQ 服務中心跳檢測的超時時間,如果該屬性的值設置為 0 ,則 RabbitMQ 服務的心跳檢測機制會自動關閉,該屬性的默認值為 60 秒。

default_vhost 屬性用來規定 RabbitMQ 服務中默認的虛擬主機名稱,默認值為 / 。

修改方式同上,這里不再贅述。

default_user & default_pass & default_user_tags & default_permissions 屬性

default_user 屬性和 default_pass 屬性分別用來規定 RabbitMQ 服務中默認的用戶名和密碼,默認值均為 guest 。

default_user_tags 屬性用來對用戶的角色進行設置,默認值為 administrator,即默認用戶為 RabbitMQ 服務的超級管理員,如下代碼所示:

default_user_tags.administrator = true

default_permissions 屬性用來規定用戶的默認權限,默認值為所有用戶都可以對 RabbitMQ 進行配置,以及讀寫操作。

如果我們想修改用戶的權限,那么我們需要這樣進行修改:

default_permissions.configure = .*
default_permissions.read = .*
default_permissions.write = .*

上述代碼中,configure 用來設置是否允許用戶對 RabbitMQ 進行配置,read 用來設置用戶的讀權限,write 用來設置用戶的寫權限。

cluster_formation.classic_config.nodes 屬性

cluster_formation.classic_config.nodes 屬性用來設置不同 RabbitMQ 服務節點間連接,該屬性會作為一個列表生效,即該列表中的所有 RabbitMQ 服務節點在 RabbitMQ 服務啟動時都將被啟動,且各節點間的通信通道將被打開。

那么該如何定義我們所需要的節點呢?如下代碼所示:

// 假定我們有兩個服務節點需要通信
cluster_formation.classic_config.nodes.1 = rabbit@hostname1
cluster_formation.classic_config.nodes.2 = rabbit@hostname2

Tips: 1. rabbitmq.conf 文件中的所有屬性,一經修改,需要重啟 RabbitMQ 服務才可生效。
2. 出于不同的安裝方式,rabbitmq.conf 配置文件可能有的安裝方式不會自動生成,如果需要,我們可以在上述指定目錄新建一個 rabbitmq.conf 文件,并重啟 RabbitMQ 服務。

4. RabbitMQ 額外配置文件

文件介紹

通過對上述 RabbitMQ 環境配置文件以及 RabbitMQ 基礎配置文件及其中的核心屬性的介紹,我們已經將 RabbitMQ 中的所有核心配置項全部介紹完畢了,這些核心配置項基本可以滿足我們自定義 RabbitMQ 98% 的需求的需要。

RabbitMQ 額外配置文件是對上述 RabbitMQ 基礎配置文件的補充,當我們對這個額外配置文件做了自定義配置之后,那么我們所配置的內容會和 RabbitMQ 基礎配置文件相合并,但是這個額外配置文件是通過 erlang 語言的語法來配置的,如果我們想自定義該配置文件的話,還需要我們對 erlang 語言有所了解。

出于本套課程的初衷考慮,本節不會對 RabbitMQ 額外配置文件做進一步的介紹,我們只需要了解 RabbitMQ 配置文件中存在這么一個額外的配置文件即可,這個配置文件在實際工作中幾乎是不使用的。

RabbitMQ 額外配置文件只存在于 Centos 系統中,文件名稱默認為 advanced.config 。在 Centos 系統中,該文件位于 /etc/rabbitmq 路徑下;在 Windows 系統中,該文件位于 %APPDATA%\RabbitMQ 路徑下,其中,APPDATA 指的是 RabbitMQ 中數據文件的所在位置。

5. 小結

本小節主要對 RabbitMQ 中的配置文件,及其配置文件屬性做了詳細介紹。針對基礎核心配置文件,例如,RabbitMQ 環境配置文件和 RabbitMQ 基礎配置文件,對這些配置文件中的各個核心配置屬性都做了詳細介紹,對于不需要各位同學掌握的 RabbitMQ 額外配置文件 advanced.config ,各位同學只需要知道它的作用即可。