环境:
- centos8.2
- RabbitMQ 3.8.8
- Erlang 23.0
安装RabbitMq环境参照:
rabbitmq的安装位置为: /usr/local/rabbitmq
一、rabbitmq的日志文件
rabbitmq的默认日志文件位置为: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@*t.log
,如下图所示:
打开这个日志文件,我们可以看到rabbitmq的启动信息:
上图中的database dir中有个
mnesia
,这是erlang的一个分布式数据库,可以百度详情;
根据上面的提示,我们可以看到,我们自己没有给rabbitmq提供配置文件,所以rabbitmq使用的是内建的配置信息;
二、rabbitmq的配置文件位置
首先,看官网上给出的说明:
也就是说,在centos8.2下面,rabbitmq的配置文件应该是在:
# 注意安装目录为: /usr/local/rabbitmq
/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf
/usr/local/rabbitmq/etc/rabbitmq/advanced.config
默认安装后是不存在这两个文件的,我们需要根据自己的情况建立。
我们也可以使用环境变量指定配置文件的目录,例如:
- 设置rabbitmq.conf文件的位置
RABBITMQ_CONFIG_FILE=/path/to/a/custom/location/rabbitmq.conf- 设置advanced.config文件的位置
RABBITMQ_ADVANCED_CONFIG_FILE=/path/to/a/custom/location/advanced.config- 设置rabbitmq-env.conf文件的位置
RABBITMQ_CONF_ENV_FILE=/path/to/a/custom/location/rabbitmq-env.conf
三、关于rabbitmq.conf和advanced.config
3.1 rabbitmq.conf文件
这个文件是在最新推出的配置文件格式,也是官网推荐的,我们应该尽可能的使用此配置文件。它的格式如下:
一个配置占一行;
配置采用键值对方式,如: key=value;
行头加#表示注释;
示例的配置文件:
# 插件[rabbitmq_management]的web地址
management.tcp.port = 15672
management.tcp.ip = 0.0.0.0
# tcp连接端口
listeners.tcp.default = 5672
完整的示例文件: https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example
3.2 advanced.config文件
这个文件是老版本格式的配置文件,因为有个别配置在rabbitmq.conf文件格式中不容易配置,所以被保留了下来。它的里面的内容会在程序启动时被合并到rabbitmq.conf中。
示例格式如下:
[
{amqp_client,
[{prefer_ipv6,false},{ssl_options,[]},{writer_gc_threshold,1000000000}]},
{asn1,[]},
...
{xmerl,[]}
]
四、配置文件的载入策略
修改配置文件后,我们需要重启rabbitmq。
# 先关闭
rabbitmqctl stop
# 再启动
rabbitmq-server -detached
五、运行时查看生效的配置文件信息
运行如下命令,可以查看rabbitmq正在使用的配置文件信息:
rabbitmq-diagnostics environment
但显示的配置文件格式是老版的,易读性不是很好,我测试的改变了插件[rabbitmq_management]的管理端口后,查看的结果如下:
六、常用的配置
6.1 网络配置
rabbitmq启动后,默认监听三个端口(启用[rabbitmq_management]插件):
执行命令:rabbitmqctl status
,末尾输出如下:
这里的5672就是我们连接rabbitmq需要填写的地址,而[::]表示监听所有的ip。
如果我们想配置仅监听内网的ip个指定端口,可以配置如下:
配置后重启rabbitmq,再执行命令:rabbitmqctl status
,末尾输出如下:
可以看到,监听的地址已经修改为仅监听 192.168.3.42:5673
。
如果我们想监听多个地址,可设置如下:
配置后重启rabbitmq,再执行命令:rabbitmqctl status
,末尾输出如下:
注意: 上面的tcp.1、tcp.2、tcp.3并没有特殊的含义,你也可以用tcp.abc,它只是用于区分多个网络配置项的。
如果仅想将指定的端口限制到所有的ipv4上则修改上面的配置为:
listeners.tcp.3 = 0.0.0.0:5672
如果仅想将指定的端口限制到所有的ipv6上则修改上面的配置为:
listeners.tcp.3 = :::5672
注意:
本人测试:当新创建用户mq,并按照上面的监听设置后,发现localhost连接报认证错误,而用gust就可以连接上,所以最好使用静态ip连接
6.2 日志记录级别
rabbitmq的日志记录级别共有:error、warning、info、debug;默认的是info。
配置文件中修改如下:
6.3 限额
一个连接上允许开启的最大信道数量,配置如下(默认:2047):
# 设置为0,表示不限制。为了防止信道泄露,不要设置太高
channel_max = 2047
6.4 内存限制
。。。