虽然 RabbitMQ 中的一些设置可以使用环境变量进行调整,但大多数是使用主配置文件进行配置的,通常名为,包括核心服务器和插件的配置。附加配置文件可用于配置无法以主文件的配置格式表示的设置,这将在下面详细介绍。
下面的部分介绍了这两个文件的语法和位置,在哪里可以找到示例等等。
默认配置文件的位置是特定于发行版的,不同的发行版本默认文件配置位置也不同。RabbitMQ包或节点不会创建任何配置文件。用户和部署工具在创建文件时应使用以下位置:
平台 | 默认配置文件目录 | 示例配置文件路径 |
通用二进制包 | $RABBITMQ_HOME/etc/rabbitmq/ | $RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf $RABBITMQ_HOME/etc/rabbitmq/advanced.config |
Debian 和 Ubuntu | /etc/rabbitmq/ | /etc/rabbitmq/rabbitmq.conf /etc/rabbitmq/advanced.config |
基于 RPM 的 Linux | /etc/rabbitmq/ | /etc/rabbitmq/rabbitmq.conf /etc/rabbitmq/advanced.config |
Windows | %APPDATA%\RabbitMQ\ | %APPDATA%\RabbitMQ\rabbitmq.con f%APPDATA%\RabbitMQ\advanced.config |
MacOS Homebrew Formula | ${install_prefix}/etc/rabbitmq/,而 Homebrew 前缀通常是 /usr/local | ${install_prefix}/etc/rabbitmq/rabbitmq.conf ${install_prefix}/etc/rabbitmq/advanced.config |
环境变量可用于覆盖配置文件的位置:
# 覆盖主配置文件位置 RABBITMQ_CONFIG_FILE=/path/to/a/custom/location/rabbitmq.conf # 覆盖高级配置文件位置 RABBITMQ_ADVANCED_CONFIG_FILE=/path/to/a/custom/location/advanced.config # 覆盖环境变量文件位置 RABBITMQ_CONF_ENV_FILE=/path/to/a/custom/location/rabbitmq-env.conf
可以通过检查 RabbitMQ 日志文件来查找配置文件的位置。在 Windows 系统中,日志文件存在 目录中,如下图:
在 Linux 系统中,日志文件存在 目录中,如下图:
使用编辑器打开“rabbit@hxstrive.log”日志文件,查找“home dir”,Windows系统如下图:
Linux 系统如下图:
如果 RabbitMQ 无法找到或读取配置文件,则日志条目会显示“not found”:
node : rabbit@example home dir : /var/lib/rabbitmq config file(s) : /var/lib/rabbitmq/hare.conf (not found)
或者,本地节点使用的配置文件的位置,使用命令查看配置文件位置:
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmq-diagnostics.bat status Status of node hello@hxstrive ... Runtime ... Data directory Node data directory: c:/Users/Administrator/AppData/Roaming/RabbitMQ/db/hello@hxstrive-mnesia Raft data directory: c:/Users/Administrator/AppData/Roaming/RabbitMQ/db/hello@hxstrive-mnesia/quorum/hello@hxstrive Config files Log file(s) * <stdout> * c:/Users/Administrator/AppData/Roaming/RabbitMQ/log/hello@hxstrive.log * c:/Users/Administrator/AppData/Roaming/RabbitMQ/log/hello@hxstrive_upgrade.log Alarms ...
如果要检查特定节点的位置,包括远程运行的节点,请使用 -n(--node 的缩写)开关,命令如下:
rabbitmq-diagnostics status -n [node name]
所有支持的 RabbitMQ 版本都使用类似 ini 的 sysctl 配置文件格式作为主配置文件,该文件通常命名为。
新的配置格式更简单,更易于人类阅读和机器生成。与 RabbitMQ 3.7.0 之前使用的经典配置格式相比,它也相对有限。例如,在配置 LDAP 支持时,可能需要使用深度嵌套的数据结构来表达所需的配置。为了满足这种需求,现代 RabbitMQ 版本允许在单独的文件中同时使用两种格式:
rabbitmq.conf 使用新的样式格式,推荐用于大多数设置
advanced.config 涵盖了更多 ini 样式配置无法表达的高级设置。这将在以下各节中更详细地介绍。
配置文件 | 使用的格式 | 目的 |
rabbitmq.conf | 新样式格式(sysctl 或类似 ini) | 主配置文件。应该用于大多数设置。人类更容易阅读,机器(部署工具)更容易生成。注意:不是每个设置都可以用这种格式表示。 |
advanced.config | 经典(Erlang 术语) | 无法以新样式配置格式表达的有限数量的设置,例如 LDAP 查询,仅应在必要时使用。 |
rabbitmq-env.conf(Windows 上的rabbitmq-env.conf.bat) | 环境变量对 | 用于在一处设置与 RabbitMQ 相关的环境变量。 |
比较这个示例 rabbitmq.conf 文件:
# 一种新的样式格式片段,rabbitmq.conf 文件使用这种格式。 ssl_options.cacertfile = /path/to/ca_certificate.pem ssl_options.certfile = /path/to/server_certificate.pem ssl_options.keyfile = /path/to/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true
到
%% 经典格式片段,现在由 advanced.config 文件使用。 [ {rabbit, [{ssl_options, [{cacertfile, "/path/to/ca_certificate.pem"}, {certfile, "/path/to/server_certificate.pem"}, {keyfile, "/path/to/server_key.pem"}, {verify, verify_peer}, {fail_if_no_peer_cert, true}]}]} ].