一般情况下,可以使用默认的内建配置来有效地运行 RabbitMQ ,并且大多数情况下也并不需要修改任何 RabbitMQ 的配直。当然,为了更加有效地操控 RabbitMQ ,也可以利用调节系统范围内的参数来达到定制化的需求。
本章节将介绍怎样通过环境变量(Environment Variable)实现 RabbitMQ 的定制化配置,如节点名称、配置文件的路径、节点内部通信端口等等。
对于不同的操作系统(OS)和不同的 RabbitMQ 安装包来说,相应的配置会有所变化,包括相应的配置文件路径等等。
RabbitMQ 的环境变量都是以“RABBITMQ_”前缀开头的。如果在 Linux 环境中,可以通过 Shell 环境进行设置,也可以在 rabbitmq-env.conf 环境变量文件中设置。如果在 Windows 系统中,可以通过修改 rabbitmq-env.bat 批处理文件来实现。
下面通过修改 RabbitMQ 的节点名称来演示,可使用命令查看 RabbitMQ 状态信息,如下:
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl status Status of node rabbit@hxstrive ... Runtime OS PID: 11964 OS: Windows Uptime (seconds): 88237 Is under maintenance?: false RabbitMQ version: 3.9.11 Node name: rabbit@hxstrive ...
上面输出信息中,当前 RabbitMQ 节点名称为 rabbit@hxstrive,RabbitMQ 默认以“rabbit@”开头,然后加上当前系统主机名。当前系统主机名如下图:
编辑 rabbitmq-env.bat 批处理文件,添加“set NODENAME=hello”内容(见第11行),如下图:
重新启动 RabbitMQ 服务,使用命令查看 RabbitMQ 状态信息。如下:
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl status Status of node hello@hxstrive ... Runtime OS PID: 19016 OS: Windows Uptime (seconds): 20 Is under maintenance?: false RabbitMQ version: 3.9.11 Node name: hello@hxstrive ...
从上面的输出可以看出,节点名称已经变成了“hello@hxstrive”,而不是默认的“rabbit@hxstrive”。
还是继续上面的示例,通过修改 RabbitMQ 的节点名称来演示在 Linux 下,怎样通过环境变量设置节点名称。
使用 vim 编辑 /etc/rabbitmq/rabbitmq-env.conf 文件,修改文件中的 NODENAME 配置。如下图:
上面将节点名称修改为“hello”,通过 :wq 命令保存配置文件。
然后,使用命令重启 RabbitMQ 服务,如下:
hxstrive@course:/etc/rabbitmq$ sudo rabbitmqctl status Status of node hello@course ... Runtime OS PID: 41654 OS: Linux Uptime (seconds): 36 Is under maintenance?: false RabbitMQ version: 3.8.9 Node name: hello@course Erlang configuration: Erlang/OTP 23 [erts-11.1.8] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:64] Erlang processes: 446 used, 1048576 limit Scheduler run queue: 1 Cluster heartbeat timeout (net_ticktime): 60 ...
从上面的输出可以看出,节点名称已经变成了“hello@course”,而不是默认的“rabbit@course”。
通过环境变量除了设置节点名(NODENAME)之外,可以设置节点IP地址(NODE_IP_ADDRESS)、节点端口(NODE_PORT)等等