RabbitMQ–扩展–07–配置文件
1、介绍
RabbitMQ的配置,可以通过环境变量、配置文件、运行时参数(和策略)等三种方式来定制化相应的服务。
2、RabbitMQ环境变量
RabbitMQ服务端 参数 可以通过环境变量进行设置值,例如
- 节点名称
- RabbitMQ 配置文件的地址
- 节点内部通信端口等。
2.1、环境变量
- 以"RABBITMQ_"开头
- 可以在Shell环境中设置
- 如果是在非Shell环境中配置,则需要将"RABBITMQ"这个前缀去除
- 可以在rabbitmq-env.conf中设置。
- 优先级顺序从高到低
- Shell环境
- rabbitmq-env.conf
- 默认的配置
- $RABBITMQ_HOME/sbin/rabbitrnq-defaults
2.2、服务节点名称
当采用rabbitmq-server -detached 启动RabbitMQ服务的时候,此服务节点默认以"rabbit@"加上当前的Shell环境的hostname(主机名)来命名,即rabbit@$HOSTNAME。
2.3、rabbitmq-env.conf
通过在启动RabbitMQ服务时指定 RABITMQ CONF ENV FILE 变量来设置此文件的路径
# RabbitMQ环境变量的定义文件(rabbitmq-env.conf)
#定义节点名称
NODENAME=rabbit@node1
#定义RabbitMQ 的对外通信端口号
NODE_PORT=5672
#配置文件的地址
CONFIG_FILE=/apps/conf/rabbitmq/rabbitmq
2.4、常见变量
注意,如果没有特殊的需求,不建议更改RabbitMQ 的环境变量。如果在实际生产环境中,
对于配量和日志的目录有着特殊的管理目录,那么可以参考以下相应的配置
#配置文件的地址
CONFIG_FILE=/apps/conf/rabbitmq/rabbitmq
#环境变量的配置文件的地址
CONF_ENV_FILE=/apps/conf/rabbitmq/rabbitmq-env.conf
#服务日志的地址
LOG_BASE=/apps/logs/rabbitmq
#Mnesia 的路径
MNE5IA BA5E=/apps/dbdat/rabbitmq/mnesia
3、RabbitMQ配置文件
配置文件 可以定义RabbitMQ 服务和插件设直,例如,TCP 监听端口,以及其他网络相关的设直、内存限制、磁盘限制等。
3.1、配置项说明
3.2、配置项加密
- 配置文件中有一些敏感的配置项可以被加密, 然后在RabbitMQ 启动时可以对这些项进行解密。
- 对这些项进行加密并不是意味着系统的安全性增强了,而是遵从一些必要的规范,让一些敏感的数据不会出现在文本形式的配置文件中。
- 在配置文件中将加密之后的值以"(encrypted ,加密的值)"形式包裹
3.3、网络
- 网络是客户端和RabbitMQ之间通信的媒介。
- RabbitMQ支持的所有协议都是基于TCP层面的。包括操作系统和RabbitMQ本身都提供了许多可调节的参数,除了操作系统内核参数和DNS,所有的RabbitMQ设置都可以通过在rabbitmq.config 配置文件中配置来实现。
- 优化网络配置的一个重要目标就是提高吞吐量,比如禁用Nagle 算法、增大TCP缓冲区的大小。
- 每个TCP连接都分配了缓冲区。一般来说,缓冲区越大,吞吐量也会越高,但是每个连接上耗费的内存也就越多,从而使总体服务的内存增大,这是一个权衡的问题。
- 在Linux 操作系统中,默认会自动调节TCP缓冲区的大小,通常会设置为80KB到120KB之间。
- 要提高吞吐量可以使用rabbit.tcp.listen.options 来加大配置。
4、RabbitMQ运行时参数(策略)
运行时参数和策略 可以在运行时定义集群层面的服务设置
RabbitMQ绝大多数的配置都可以通过修改rabbitrnq.config配置文件来完成,但是其中有些配置并不太适合在rabbitrnq.config中去实现。比如某项配置不需要同步到集群中的其他节点中,或者某项配置需要在运行时更改(rabbitrnq.config的修改需要重启Broker才能生效)。这种类型的配置在RabbitMQ中称之为运行时参数。
4.1、设置参数
- 可以通过 rabbitrnqctl工具 来设置
- 可以通过 RabbitMQ Management 插件提供的HTTPAPI接口来设置。
4.2、RabbitMQ参数类型
- vhost 级别的Parameter
- 由一个组件名称(component name)、名称(name)和值(value)组成
- global 级别的Parameter
- 由一个名称和值组成
4.2.1、vhost 级别的参数
对应的rabbitrnqctl工具相关的命令有三种
1. set pararneter
2. list parameters
3. clear parametero
用来设置一个参数
rabbitmqctl set_parameter [-p vhost] {component_name} {name} {value}
用来列出指定虚拟主机上所有的Parameter。
rabbitmqctl list_parameters [-p vhost]
用来清除指定的参数
rabbitmqctl clear_parameter [-p vhost] {componenet_name} {key}
4.2.2、global 级别的参数
global 级别Parameter的set、clear 和list功能所对应的rabbitrnqctl工具与HTTP API接口如表