前言
前面介绍了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