rabbitmq 配置详解

RabbitMQ 配置

rabbitmq.config中的变量配置大部分的RabbitMQ用户都会不会修改这些值,有些是相当模糊的.然而,为了完整性,他们都在这里列出。

Key 配置 Documentation 说明
tcp_listeners 用于监听 AMQP连接的端口列表(无SSL). 可以包含整数 (即”监听所有接口”)或者元组如 {“127.0.0.1”, 5672} 用于监听一个或多个接口.Default: [5672]
num_tcp_acceptors 接受TCP侦听器连接的Erlang进程数。Default: 10
handshake_timeout AMQP 0-8/0-9/0-9-1 handshake (在 socket 接和SSL 握手之后)的最大时间, 毫秒为单位.Default: 10000
ssl_listeners 如上所述,用于SSL连接。Default: []
num_ssl_acceptors 接受SSL侦听器连接的Erlang进程数。Default: 1
ssl_options SSL配置.参考SSL documentation.Default: []
ssl_handshake_timeout SSL handshake超时时间,毫秒为单位.Default: 5000
vm_memory_high_watermark 流程控制触发的内存阀值.相memory-based flow control 文档.Default: 0.4
vm_memory_high_watermark_paging_ratio 高水位限制的分数,当达到阀值时,队列中消息消息会转移到磁盘上以释放内存. 参考memory-based flow control 文档.Default: 0.5
disk_free_limit RabbitMQ存储数据分区的可用磁盘空间限制.当可用空间值低于阀值时,流程控制将被触发. 此值可根据RAM的总大小来相对设置 (如.{mem_relative, 1.0}). 此值也可以设为整数(单位为bytes)或者使用数字单位(如.”50MB”). 默认情况下,可用磁盘空间必须超过50MB. 参考 Disk Alarms 文档.Default: 50000000
log_levels 控制日志的粒度.其值是日志事件类别(category)和日志级别(level)成对的列表.level 可以是 ‘none’ (不记录日志事件), ‘error’ (只记录错误), ‘warning’ (只记录错误和警告), ‘info’ (记录错误,警告和信息), or ‘debug’ (记录错误,警告,信息以及调试信息).目前定义了4种日志类别. 它们是:channel -针对所有与AMQP channels相关的事件connection - 针对所有与网络连接相关的事件federation - 针对所有与federation相关的事件mirroring -针对所有与 mirrored queues相关的事件Default: [{connection, info}]
frame_max 与客户端协商的允许最大frame大小. 设置为0表示无限制,但在某些QPid客户端会引发bug. 设置较大的值可以提高吞吐量;设置一个较小的值可能会提高延迟.Default: 131072
channel_max 与客户端协商的允许最大chanel大小. 设置为0表示无限制.该数值越大,则broker使用的内存就越高.Default: 0
channel_operation_timeout Channel 操作超时时间(毫秒为单位) (内部使用,因为消息协议的区别和限制,不暴露给客户端).Default: 5000
heartbeat 表示心跳延迟(单位为秒) ,服务器将在connection.tune frame中发送.如果设置为 0, 心跳将被禁用. 客户端可以不用遵循服务器的建议, 查看 AMQP reference 来了解详情. 禁用心跳可以在有大量连接的场景中提高性能,但可能会造成关闭了非活动连接的网络设备上的连接落下.Default: 60 (3.5.5之前的版本是580)
default_vhost 当RabbitMQ从头开始创建数据库时创建的虚拟主机. amq.rabbitmq.log交换器会存在于这个虚拟主机中.Default: <<”/“>>
default_user RabbitMQ从头开始创建数据库时,创建的用户名.Default: <<”guest”>>
default_pass 默认用户的密码.Default: <<”guest”>>
default_user_tags 默认用户的Tags.Default: [administrator]
default_permissions 创建用户时分配给它的默认Permissions .Default: [<<”.“>>, <<”.“>>, <<”.*”>>]
loopback_users 只能通过环回接口(即localhost)连接broker的用户列表如果你希望默认的guest用户能远程连接,你必须将其修改为[].Default: [<<”guest”>>]
cluster_nodes 当节点第一次启动的时候,设置此选项会导致集群动作自动发生. 元组的第一个元素是其它节点想与其建立集群的节点. 第二个元素是节点的类型,要么是disc,要么是ramDefault: {[], disc}
server_properties 连接时向客户端声明的键值对列表Default: []
collect_statistics 统计收集模式。主要与管理插件相关。选项:none (不发出统计事件)coarse (发出每个队列 /每个通道 /每个连接的统计事件) fine (也发出每个消息统计事件)你自已可不用修改此选项.Default: none
collect_statistics_interval 统计收集时间间隔(毫秒为单位). 主要针对于 management plugin.Default: 5000
auth_mechanisms 提供给客户端的SASL authentication mechanisms.Default: [‘PLAIN’, ‘AMQPLAIN’]
auth_backends 用于 authentication / authorisation backends 的列表. 此列表可包含模块的名称(在模块相同的情况下,将同时用于认证来授权)或像{ModN, ModZ}这样的元组,在这里ModN将用于认证,ModZ将用于授权.在2元组的情况中, ModZ可由列表代替,列表中的所有元素必须通过每个授权的确认,如{ModN, [ModZ1, ModZ2]}. 这就允许授权插件进行组合提供额外的安全约束.除rabbit_auth_backend_internal外,其它数据库可以通常 plugins来使用.Default: [rabbit_auth_backend_internal]
reverse_dns_lookups 设置为true,可让客户端在连接时让RabbitMQ 执行一个反向DNS查找, 然后通过 rabbitmqctl 和 管理插件来展现信息.Default: false
delegate_count 内部集群通信中,委派进程的数目. 在一个有非常多核的机器(集群的一部分)上,你可以增加此值.Default: 16
trace_vhosts tracer内部使用. 你不应该修改.Default: []
tcp_listen_options 默认socket选项. 你可能不想修改这个选项.Default:[{backlog, 128}, {nodelay, true}, {exit_on_close, false}] hipe_compile 将此选项设置为true,将会使用HiPE预编译部分RabbitMQ,Erlang的即时编译器.这可以增加服务器吞吐量,但会增加服务器的启动时间.你可以看到花费几分钟延迟启动的成本,就可以带20-50% 更好性能.这些数字与高度依赖于工作负载和硬件.HiPE 支持可能没有编译进你的Erlang安装中.如果没有的话,启用这个选项,并启动RabbitMQ时,会看到警告消息. 例如, Debian / Ubuntu 用户需要安装erlang-base-hipe 包.HiPE并非在所有平台上都可用, 尤其是Windows.在 Erlang/OTP 17.5版本之前,HiPE有明显的问题 . 对于HiPE,使用最新的OTP版本是高度推荐的.Default: false
cluster_partition_handling 如何处理网络分区.可用模式有:ignore

pause_minority {pause_if_all_down, [nodes], ignore | autoheal}where [nodes] is a list of node names (ex: [‘rabbit@node1’, ‘rabbit@node2’]) autoheal 参考documentation on partitions 来了解更多信息 Default: ignore|
|cluster_keepalive_interval|节点向其它节点发送存活消息和频率(毫秒). 注意,这与 net_ticktime是不同的; 丢失存活消息不会引起节点掉Default: 10000|
|queue_index_embed_msgs_below| 消息大小在此之下的会直接内嵌在队列索引中. 在修改此值时,建议你先阅读  persister tuning 文档.Default: 4096|
|msg_store_index_module|队列索引的实现模块. 在修改此值时,建议你先阅读  persister tuning 文档.Default: rabbit_msg_store_ets_index|
|backing_queue_module| 队列内容的实现模块. 你可能不想修改此值.Default: rabbit_variable_queue|
|msg_store_file_size_limit| Tunable value for the persister. 你几乎肯定不应该改变此值。Default: 16777216|
|mnesia_table_loading_timeout|在集群中等待使用Mnesia表可用的超时时间。Default: 30000|
|queue_index_max_journal_entries|Tunable value for the persister. 你几乎肯定不应该改变此值。Default: 65536|
|queue_master_locator| Queue master 位置策略. 可用策略有: <<”min-masters”>> <<”client-local”>> <<”random”>> 查看documentation on queue master location 来了解更多信息.Default: <<”client-local”>> |

此外,许多插件也可以在配置文件中配置, 其名称是rabbitmq_plugin的形式. 我们的维护的插件被记录在以下位置:

  1. rabbitmq_management
  2. rabbitmq_management_agent
  3. rabbitmq_mochiweb
  4. rabbitmq_stomp
  5. rabbitmq_shovel
  6. rabbitmq_auth_backend_ldap

文件位置
你可以设置下面的环境变量来指定相关文件的位置,但大部分人都不必这样做:

名称 描述
RABBITMQ_BASE 此基础目录包含了RabbitMQ server的数据库,日志文件的子目录. 另外,也可以独立设置RABBITMQ_MNESIA_BASE RABBITMQ_LOG_BASE 目录.RABBITMQ_CONFIG_FILE 用于配置文件的路径,无.config扩展名. 如果 configuration file 存在,服务器将使用它来配置RabbitMQ组件. 参考 Configuration guide 来了解更多信息.
RABBITMQ_MNESIA_BASE 包含RabbitMQ 服务器Mnesia数据库文件子目录的基本目录,除非明确设置了RABBITMQ_MNESIA_DIR目录,否则每个节点都应该配置一个. (除了Mnesia文件,这个位置还包含消息存储和索引文件以及模式和集群的细节.)
RABBITMQ_MNESIA_DIR RabbitMQ节点Mnesia数据库文件安放的目录. (除了Mnesia文件,这个位置还包含消息存储和索引文件以及模式和集群的细节.)RABBITMQ_LOG_BASE 用于包含RabbitMQ 服务器日志文件的基本目录, 除非明确设置了RABBITMQ_LOGS 或 RABBITMQ_SASL_LOGS.RABBITMQ_LOGS RabbitMQ 服务器的Erlang日志文件路径.在Window上不能覆盖此变量.RABBITMQ_SASL_LOGS RabbitMQ服务器的Erlang SASL (System Application Support Libraries)日志文件路径. 在Window上不能覆盖此变量.
RABBITMQ_PLUGINS_DIR 用于查找插件的目录 .
RABBITMQ_PLUGINS_EXPAND_DIR 用于在启动服务器时扩展启用插件的工作目录。
RABBITMQ_ENABLED_PLUGINS_FILE 此文件记录了显式启用的插件。
RABBITMQ_PID_FILE 此文件中包含了rabbitmqctl所等待进程ID的信息.
坚持原创技术分享,您的支持将鼓励我继续创作!
//