环境:

  • centos8.2
  • RabbitMQ 3.8.8
  • Erlang 23.0

安装RabbitMq环境参照:

  • window下安装rabbitmq
  • linux下安装rabbitmq

本文参照:https://www.rabbitmq.com/configure.html

rabbitmq的安装位置为: /usr/local/rabbitmq

一、rabbitmq的日志文件

rabbitmq的默认日志文件位置为: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@*t.log,如下图所示:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_配置文件

打开这个日志文件,我们可以看到rabbitmq的启动信息:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq_02

上图中的database dir中有个mnesia,这是erlang的一个分布式数据库,可以百度详情;

根据上面的提示,我们可以看到,我们自己没有给rabbitmq提供配置文件,所以rabbitmq使用的是内建的配置信息;

二、rabbitmq的配置文件位置

首先,看官网上给出的说明:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq_03


也就是说,在centos8.2下面,rabbitmq的配置文件应该是在:

# 注意安装目录为: /usr/local/rabbitmq
/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf
/usr/local/rabbitmq/etc/rabbitmq/advanced.config

默认安装后是不存在这两个文件的,我们需要根据自己的情况建立。
我们也可以使用环境变量指定配置文件的目录,例如:

  1. 设置rabbitmq.conf文件的位置
    RABBITMQ_CONFIG_FILE=/path/to/a/custom/location/rabbitmq.conf
  2. 设置advanced.config文件的位置
    RABBITMQ_ADVANCED_CONFIG_FILE=/path/to/a/custom/location/advanced.config
  3. 设置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]的管理端口后,查看的结果如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_分布式_04

六、常用的配置

6.1 网络配置

rabbitmq启动后,默认监听三个端口(启用[rabbitmq_management]插件):

执行命令:rabbitmqctl status,末尾输出如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq_05


这里的5672就是我们连接rabbitmq需要填写的地址,而[::]表示监听所有的ip。

如果我们想配置仅监听内网的ip个指定端口,可以配置如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq 需要依赖mysql吗_06


配置后重启rabbitmq,再执行命令:rabbitmqctl status,末尾输出如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_linux_07


可以看到,监听的地址已经修改为仅监听 192.168.3.42:5673。如果我们想监听多个地址,可设置如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq_08

配置后重启rabbitmq,再执行命令:rabbitmqctl status,末尾输出如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq 需要依赖mysql吗_09

注意: 上面的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。

配置文件中修改如下:

rabbitmq 需要依赖mysql吗 rabbitmq的配置_rabbitmq_10

6.3 限额

一个连接上允许开启的最大信道数量,配置如下(默认:2047):

# 设置为0,表示不限制。为了防止信道泄露,不要设置太高
channel_max = 2047

6.4 内存限制

。。。