前言
前面介紹了erlang環境的安裝和rabbitmq環境安裝,接下來對rabbitmq詳細配置;
設置配置文件
- rabbitmq的系統配置文件一般是rabbitmq.conf,可以登錄后台查看它的路徑,如果你是源碼安裝,最初這個文件是沒有的,需要手動創建;如果是apt安裝他的位置在/etc/rabbitmq/目錄下,它規定了rabbitmq的眾多參數設定;
# 進入指定目錄
touch /usr/local/rabbitmq_server/etc/rabbitmq/rabbitmq.conf
配置文件的語法繼承於erlang語言,有點類似json
[
%% this is rabbitmq
{rabbit, [
{vm_memory_high_watermark_paging_ratio, 0.4},
{vm_memory_high_watermark, 0.4}
]
}
].
說明
-
注釋采用%%;
-
注意最后結尾一定要加上.,表示結束,否則啟動會報錯,rabbitmq啟動的時候會自動讀取這個文件;
在新的3.7版本以上配置文件開始使用sysctl格式,上述配置文件的sysctl格式如下:
# this is rabbitmq,這是注釋
vm_memory_high_watermark_paging_ratio = 0.4
vm_memory_high_watermark = 0.4
對於更新的rabbitmq版本來說配置文件采用兼容格式,所以可以配置多種格式都能識別;
常用的配置參數
tcp_listerners : 設置rabbimq的監聽端口,默認為[5672]。
disk_free_limit : 磁盤低水位線,若磁盤容量低於指定值則停止接收數據,默認值為{mem_relative, 1.0},即與內存相關聯1:1,也可定制為多少byte.
vm_memory_high_watermark : 設置內存低水位線,若低於該水位線,則開啟流控機制,默認值是0.4,即內存總量的40%。
vm_memory_high_watermark_paging_ratio : 設置內存低水位線消息開始持久化到磁盤,默認50%
force_fine_statistics : 該參數屬於rabbimq_management,若為true則進行精細化的統計,但會影響性能。
frame_max : 與客戶端協商的允許最大包大小,若包太大會拆分成多次發送,默認是131072=128K。
heartbeat : 客戶端與服務端心跳間隔,設置為0則關閉心跳,默認是60秒。
log_level : 控制日志的粒度,'none' (不記錄日志事件), 'error' (只記錄錯誤), 'warning' (只記錄錯誤和警告), 'info' (記錄錯誤,警告和信息), or 'debug' (記錄錯誤,警告,信息以及調試信息).
channel_max:與客戶端協商的允許最大chanel大小. 設置為0表示無限制.該數值越大,則broker使用的內存就越高,Default: 0
cluster_nodes:當節點第一次啟動的時候,設置此選項會導致集群動作自動發生. 元組的第一個元素是其它節點想與其建立集群的節點. 第二個元素是節點的類型,要么是disc,要么是ram,Default: {[], disc}
collect_statistics_interval:統計收集時間間隔(毫秒為單位),主要針對於 management plugin.Default: 5000
一個常用的配置文件
# 3.7版本以前的格式
[
%% this is rabbitmq setting
{rabbit, [
{vm_memory_high_watermark_paging_ratio, 0.5},
{vm_memory_high_watermark, 0.4},
{tcp_listeners, [5672]},
{log_levels, [{connection, error}, {channel, error}]},
{heartbeat, 60},
{frame_max, 131072},
{channel_max, 500},
{disk_free_limit, 50000000},
]
}
].
# 3.7版本sysctl格式
# this is rabbitmq setting
listeners.tcp.local = 127.0.0.1:5672
heartbeat = 60
frame_max = 131072
channel_max = 128
vm_memory_high_watermark.relative = 0.4
vm_memory_high_watermark_paging_ratio = 0.5
disk_free_limit.absolute = 50000
log.console = false
log.console.level = info
log.exchange = false
log.exchange.level = info
