RabbitMQ 教程

RabbitMQ 环境变量大全

RabbitMQ 使用的所有环境变量都使用“RABBITMQ_”前缀(除非在 rabbitmq-env.conf 或 rabbitmq-env-conf.bat 中定义)。

在 Shell 环境中设置的环境变量优先于在 rabbitmq-env.conf 或 rabbitmq-env-con.bat 中设置的环境变量。而 rabbitmq-env.conf 或 rabbitmq-env-con.bat 中设置的环境变量会覆盖 RabbitMQ 的内置缺省值。

下表描述了可用于配置 RabbitMQ 的关键环境变量:

名称描述
RABBITMQ_NODE_IP_ADDRESS如果您只想绑定到一个网络接口,请更改此设置。 可以在配置文件中设置绑定到两个或多个接口。

默认:一个空字符串,意思是“绑定到所有网络接口”。

RABBITMQ_NODE_PORT

有关 RabbitMQ 各个部分使用的端口的更多信息,请参阅网络指南

默认:5672

RABBITMQ_DIST_PORT

用于节点间和 CLI 工具通信的端口。如果节点配置文件设置 kernel.inet_dist_listen_min 或 kernel.inet_dist_listen_max 键,则忽略。有关详细信息,请参阅网络,有关特定于 Windows 的详细信息,请参阅 Windows Quirks

默认:RABBITMQ_NODE_PORT + 20000

ERL_EPMD_ADDRESS

epmd 使用的接口,节点间和 CLI 工具通信中的组件。

默认所有可用的接口,包括 IPv6 和 IPv4。

ERL_EPMD_PORT

epmd 使用的端口,节点间和 CLI 工具通信中的组件。

默认:4369

RABBITMQ_DISTRIBUTION_BUFFER_SIZE用于节点间通信连接的传出数据缓冲区大小限制,以千字节为单位。不建议使用低于 64 MB 的值。

默认128000

RABBITMQ_NODENAME每个 Erlang-node-and-machine 组合的节点名称应该是唯一的。要运行多个节点,请参阅集群指南。

默认:

  • Unix*:rabbit@$HOSTNAME

  • Windows:rabbit@%COMPUTERNAME%

RABBITMQ_CONFIG_FILE主 RabbitMQ 配置文件路径,例如 /etc/rabbitmq/rabbitmq.conf 或 /data/configuration/rabbitmq.conf 用于新样式的配置格式文件。如果使用经典配置格式,则扩展名必须为 .config

默认:

  • Generic UNIX:$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf

  • Debian:/etc/rabbitmq/rabbitmq.conf

  • RPM:/etc/rabbitmq/rabbitmq.conf

  • MacOS(Homebrew):${install_prefix}/etc/rabbitmq/rabbitmq.conf,Homebrew 前缀通常是 /usr/local

  • Windows:%APPDATA%\RabbitMQ\rabbitmq.conf

RABBITMQ_CONFIG_FILES新式 (.conf) 格式的 RabbitMQ 配置文件目录的路径。文件将按字母顺序加载。为每个文件加上一个数字前缀是一种常见的做法。

默认:

  • Generic UNIX:$RABBITMQ_HOME/etc/rabbitmq/conf.d

  • Debian:/etc/rabbitmq/conf.d

  • RPM:/etc/rabbitmq/conf.d

  • MacOS(Homebrew):${install_prefix}/etc/rabbitmq/conf.d,Homebrew 前缀通常是 /usr/local

  • Windows:%APPDATA%\RabbitMQ\conf.d

RABBITMQ_ADVANCED_CONFIG_FILE“Advanced”(基于 Erlang 术语的)RabbitMQ 配置文件路径,带有 .config 文件扩展名。例如,/data/rabbitmq/advanced.config。

默认:

  • Generic UNIX $RABBITMQ_HOME/etc/rabbitmq/advanced.config

  • Debian: /etc/rabbitmq/advanced.config

  • RPM: /etc/rabbitmq/advanced.config

  • MacOS (Homebrew): ${install_prefix}/etc/rabbitmq/advanced.config,Homebrew 前缀通常是 /usr/local

  • Windows: %APPDATA%\RabbitMQ\advanced.config

RABBITMQ_CONF_ENV_FILE包含环境变量定义的文件的位置(没有 RABBITMQ_ 前缀)。请注意,Windows 上的文件名与其他操作系统不同。

默认:

  • Generic UNIX package:$RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf

  • Ubuntu and Debian:/etc/rabbitmq/rabbitmq-env.conf

  • RPM:/etc/rabbitmq/rabbitmq-env.conf

  • MacOS (Homebrew):${install_prefix}/etc/rabbitmq/rabbitmq-env.conf,Homebrew 前缀通常是 /usr/local

  • Windows:%APPDATA%\RabbitMQ\rabbitmq-env-conf.bat

RABBITMQ_MNESIA_BASE此基本目录包含 RabbitMQ 服务器的节点数据库、消息存储和集群状态文件的子目录,每个节点一个,除非明确设置 RABBITMQ_MNESIA_DIR。 重要的是,有效的 RabbitMQ 用户有足够的权限随时在此目录中读取、写入和创建文件和子目录。 此变量通常不会被覆盖。 通常 RABBITMQ_MNESIA_DIR 会被覆盖。

默认:

  • Generic UNIX package:$RABBITMQ_HOME/var/lib/rabbitmq/mnesia

  • Ubuntu and Debian packages:/var/lib/rabbitmq/mnesia/

  • RPM:/var/lib/rabbitmq/plugins

  • MacOS (Homebrew):${install_prefix}/var/lib/rabbitmq/mnesia,Homebrew 前缀通常是 /usr/local

  • Windows:%APPDATA%\RabbitMQ

RABBITMQ_MNESIA_DIR存储此 RabbitMQ 节点数据的目录。这包括模式数据库、消息存储、集群成员信息和其他持久节点状态。

默认:

  • Generic UNIX package:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME

  • Ubuntu and Debian packages:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME

  • RPM:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME

  • MacOS (Homebrew):${install_prefix}/var/lib/rabbitmq/mnesia/$RABBITMQ_NODENAME,Homebrew 前缀通常是 /usr/local

  • Windows:%APPDATA%\RabbitMQ\$RABBITMQ_NODENAME

RABBITMQ_PLUGINS_DIR插件存档文件所在的目录列表并从中提取。 这是类似 PATH 的变量,其中不同的路径由特定于操作系统的分隔符分隔(: 用于 Unix,; 用于 Windows)。 插件可以安装到此处列出的任何目录中。 不得包含路径限制部分中提到的任何字符。

默认:

  • Generic UNIX package:$RABBITMQ_HOME/plugins

  • Ubuntu and Debian packages:/var/lib/rabbitmq/plugins

  • RPM:/var/lib/rabbitmq/plugins

  • MacOS (Homebrew):${install_prefix}/Cellar/rabbitmq/${version}/plugins,Homebrew 前缀通常是 /usr/local

  • Windows:%RABBITMQ_HOME%\plugins

RABBITMQ_PLUGINS_EXPAND_DIR节点展开(解包)插件的目录并将其用作代码路径位置。 不得包含路径限制部分中提到的任何字符。

默认:

  • Generic UNIX package:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand

  • Ubuntu and Debian packages:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand

  • RPM:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand

  • MacOS (Homebrew):${install_prefix}/var/lib/rabbitmq/mnesia/$RABBITMQ_NODENAME-plugins-expand

  • Windows:%APPDATA%\RabbitMQ\$RABBITMQ_NODENAME-plugins-expand

RABBITMQ_USE_LONGNAME当设置为 true 时,这将导致 RabbitMQ 使用完全限定的名称来标识节点。 这在使用完全限定域名或使用 IP 地址作为主机名或节点名的一部分的环境中可能很有用。 请注意,如果不重置节点,则无法将节点从短名称切换为长名称。

默认:false

RABBITMQ_SERVICENAME已安装的 Windows 服务的名称。 这将出现在 services.msc 中。

默认:RabbitMQ

RABBITMQ_CONSOLE_LOG将此变量设置为 new 或重新使用以将控制台输出从服务器重定向到默认 RABBITMQ_BASE 目录中名为 %RABBITMQ_SERVICENAME% 的文件。
  • 如果未设置,来自服务器的控制台输出将被丢弃(默认)。

  • new:每次服务启动时都会创建一个新文件。

  • reuse:每次服务启动时,该文件都会被覆盖。

默认:(none)

RABBITMQ_SERVER_CODE_PATH

启动运行时指定的额外代码路径(目录)。 将在节点启动时传递给 erl 命令。

默认:(none)

RABBITMQ_CTL_ERL_ARGS

调用 rabbitmqctl 时使用的 erl 命令的参数。 这可以设置为指定用于 Erlang 分发的端口范围:

-kernel inet_dist_listen_min 35672

-kernel inet_dist_listen_max 35680

默认:(none)

RABBITMQ_SERVER_ERL_ARGS调用 RabbitMQ 服务器时使用的 erl 命令的标准参数。 这应该仅出于调试目的而被覆盖。 覆盖此变量将替换默认值。

默认:

  • Unix*:+P 1048576 +t 5000000 +stbt db +zdbbl 128000

  • Windows:None

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS调用 RabbitMQ 服务器时使用的 erl 命令的附加参数。此变量的值附加到默认参数列表 (RABBITMQ_SERVER_ERL_ARGS)。

默认:

  • Unix*: None

  • Windows: None

RABBITMQ_SERVER_START_ARGS调用 RabbitMQ 服务器时使用的 erl 命令的额外参数。这不会覆盖 RABBITMQ_SERVER_ERL_ARGS。

默认:(none)

RABBITMQ_DEFAULT_USER此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_user 含义相同,但优先级更高。 在无法提供配置文件的情况下,此选项可能更方便,并且环境变量是播种用户的唯一方法。

默认:(none)

RABBITMQ_DEFAULT_PASS此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_pass 含义相同,但优先级更高。 在无法提供配置文件的情况下,此选项可能更方便,并且环境变量是播种用户的唯一方法。

默认:(none)

RABBITMQ_DEFAULT_VHOST此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_vhost 含义相同,但优先级更高。 在无法提供配置文件并且环境变量是播种用户和虚拟主机的唯一方法的情况下,此选项可能更方便。

默认:(none)

除了上面列出的变量,还有几个环境变量告诉 RabbitMQ 在哪里找到它的数据库、日志文件、插件、配置等等。

最后,一些环境变量是特定于操作系统的。

名称描述
HOSTNAME当前机器的名称。

默认:

  • Unix, Linux:env hostname

  • MacOS:env hostname -s

COMPUTERNAME当前机器的名称。

默认:

  • Windows:localhost

ERLANG_SERVICE_MANAGER_PATH此路径是 erlsrv.exe(Erlang 服务包装脚本)的位置。

默认:

  • Windows Service:%ERLANG_HOME%\erts-x.x.x\bin

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