RabbitMQ 教程

RabbitMQ 配置文件

虽然 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}]}]}
].

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号