RabbitMQ支持三种配置方式:

  1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量

    可配置如端口、配置文件指定自定义位置、节点名字等信息。

  2) 读取配置文件rabbitmq.config

    可配置权限、集群、插件设置等高级信息, 当然也可配置端口等简单信息

  3) 通过运行命令时指定参数

    通常用来配置集群范围信息, 用来运行时动态传入

环境变量读取优先级

  1) 读取shell中环境变量

  2) 读取rabbitmq-env.conf/rabbitmq-env-conf.bat中的

  3) 读取默认的

rabbitmq-env.conf/rabbitmq-env-conf.bat 详解(颜色标注的为常用配置)

变量名称 默认值 描述
RABBITMQ_NODE_IP_ADDRESS 默认为空字符串, 即绑定所有网络接口  如果想绑定到一个固定的IP可以使用此变量. 如果要绑定到两个或两个以上只能通过rabbitmq.config中的tcp_listeners来设置。
RABBITMQ_NODE_PORT 5672  供客户端建立连接端口
RABBITMQ_DIST_PORT RABBITMQ_NODE_PORT + 20000  用于节点和CLI工具连接的端口, 如果rabbitmq.config中配置了kernel.inet_dist_listen_min 或 kernel.inet_dist_listen_max该参数将被忽略
RABBITMQ_NODENAME
  • Unix*: rabbit@$HOSTNAME
  • Windows: rabbit@%COMPUTERNAME%
 节点名字, 必须唯一
RABBITMQ_CONF_ENV_FILE
  • Generic UNIX - $RABBITMQ_HOME/etc/rabbitmq/
  • Debian - /etc/rabbitmq/
  • RPM - /etc/rabbitmq/
  • Mac OS X (Homebrew) - ${install_prefix}/etc/rabbitmq/, the Homebrew prefix is usually /usr/local
  • Windows - %APPDATA%\RabbitMQ\
 rabbitmq-env.conf/rabbitmq-env-conf.bat 默认位置, 不同系统不同安装方式位置也不同, 如果默认位置没找到则需在该位置手动创建一个
RABBITMQ_CONFIG_FILE

同上

rabbitmq.config 默认位置。 如果默认位置没找到则需在该位置手动创建一个
RABBITMQ_USE_LONGNAME  官网没说。。。。应该是false。。。

取值: true 或 false。

如果配置为true, 这将导致RabbitMQ使用完全限定的名称来标识节点

RABBITMQ_SERVICENAME Windows Service: RabbitMQ 服务名称
RABBITMQ_CONSOLE_LOG 只在控制台输出日志, 日志不会持久化到文件

取值: new 或 reuse。

两种取值都是将控制台输出从服务器重定向到名为%rabbitmqservicename%(上面那个变量)的文件。

  1)默认: 不设置, 控制台的日志不会被持久化到文件

  2)new: 每次启动时都会创建一个新的文件

  3)reuse: 每次启动服务器都会重用该日志文件

RABBITMQ_CTL_ERL_ARGS None 在调用rabbitmqctl时使用的erl命令的参数。应该仅用于调试目的。
RABBITMQ_SERVER_ERL_ARGS
  • Unix*:"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]"
  • Windows: None
在调用RabbitMQ服务器时使用的erl命令的标准参数, 应该仅用于调试目的
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS
  • Unix*: None
  • Windows: None
在调用RabbitMQ服务器时使用的erl命令的附加参数。这个变量的值被附加到参数的默认列表(RABBITMQ_SERVER_ERL_ARGS).
RABBITMQ_SERVER_START_ARGS None 在调用RabbitMQ服务器时使用的erl命令的额外参数。这不会覆盖RABBITMQ_SERVER_ERL_ARGS.
HOSTNAME
  • Unix, Linux: `env hostname`
  • MacOSX: `env hostname -s`
当前机器名称
COMPUTERNAME Windows: localhost 当前机器名称, windows使用该变量
ERLANG_SERVICE_MANAGER_PATH Windows Service:  %ERLANG_HOME%\erts-x.x.x\bin erlsrv.exe的路径, erlsrv.exe这个是erlang服务的包装脚本

rabbitmq.config详解(核心配置)

该配置文件使用的是Erlang标准配置文件,语法请参照这里

例:

  [
{rabbit, [{tcp_listeners, [5673]}]}
].
key 描述
tcp_listeners 监听AMQP连接的端口或主机/对。

Default: [5672]

num_tcp_acceptors Erlang进程的数量,接受TCP监听器的连接数。

Default: 10

handshake_timeout 对AMQP 0-8/0-9/0-9-1握手的最大时间(在套接字连接和SSL握手之后),以毫秒为间隔

Default: 10000

ssl_listeners 如上所述,用于SSL连接。

Default: []

num_ssl_acceptors 用于接受SSL监听连接的Erlang进程的数量。

Default: 1

ssl_options SSL配置参数. 详情请看 SSL documentation.

Default: []

ssl_handshake_timeout SSL握手超时,以毫秒为间隔。

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的总数设置(例如,内存比例,1.0)。该值也可以设置为整数的字节数。或者,单位(例如“50 mb”)。默认情况下,空闲磁盘空间必须超过50MB。详情请看 Disk Alarms.

Default: 50000000

log_levels 控制日志的粒度。该值是一个日志事件类别和日志级别对的列表。

可设置级别:

  'none'

  'error'

  'warning'

  'info'

  'debug'

  以上下一层级别的日志输出均包含上层级别日志输出(如: warning包含warning和error), none为不输出日志

另外,当前未分类的事件总是记录在日志中

The categories are:

  • channel - 所有与AMQP通道有关的事件
  • connection - 对于所有与网络连接有关的事件
  • federation - 对于所有与federation有关的事件
  • mirroring - 对于与镜像队列相关的所有事件

Default: [{connection, info}]

frame_max

框架最大允许大小(以字节为单位)与消费者进行数据交换。设置为0意味着“无限”,但会在一些QPid客户端触发一个bug。

设置更大的值可能会提高吞吐量;

设置较小的值可能会提高延迟。

Default: 131072

channel_max

与消费者进行谈判的最大允许数量。设置为0意味着“无限”。

使用更多的通道会增加代理的内存占用。

Default: 0

channel_operation_timeout 通道操作超时为毫秒(内部使用,由于消息传递协议的差异和限制而不直接暴露于客户机)。

Default: 15000

heartbeat

该值表示服务器在连接中发送的心跳延迟,在几秒钟内。优化框架。如果设置为0,则会禁用心跳。客户端可能不会遵循服务器的建议,请参阅AMQP参考以了解更多细节。

在有大量连接的情况下,禁用心跳可能改善性能,但可能会导致连接在关闭非活动连接的网络设备的出现。

Default: 60 (580 prior to release 3.5.5)

default_vhost 当RabbitMQ创建一个新的数据库时,创建一个虚拟主机。交换amq.rabbitmq.logwill存在于这个虚拟主机中。

Default: <<"/">>

default_user 当RabbitMQ从头创建一个新数据库时,要创建用户名。

Default: <<"guest">>

default_pass 默认用户的密码。

Default: <<"guest">>

default_user_tags 默认用户的标记。

Default: [administrator]

default_permissions 在创建时分配给默认用户的权限。

Default:  [<<".*">>, <<".*">>, <<".*">>]

loopback_users

只允许通过环回接口连接到代理的用户列表(即localhost)。 如果您希望允许缺省的来宾用户远程连接,则需要将其更改为 [].

Default:  [<<"guest">>]

cluster_nodes 当一个节点开始第一次启动时,将它设置为使集群自动发生。元组的第一个元素是节点试图集群到的节点。第二个元素是磁盘或ram,并确定节点类型。

Default: {[], disc}

server_properties 键值对的列表,在连接上向客户端宣布。

Default: []

collect_statistics 统计数据收集模式。主要与管理插件有关。选项有:

  • none (不要发布统计数据)
  • coarse (发出每个队列/每个通道/每个连接统计信息)
  • fine (发出的每条数据)

通常情况下不需要设置该参数

Default: none

collect_statistics_interval 统计数据收集间隔以毫秒为间隔。 主要相关插件 management plugin.

Default: 5000

management_db_cache_multiplier 管理插件将缓存诸如队列清单之类的代价较高的查询的时间。缓存将把最后一个查询的运行时间乘以这个值,并在此时间内缓存结果。

Default: 5

auth_mechanisms SASL authentication mechanisms to offer to clients.

Default: ['PLAIN', 'AMQPLAIN']

auth_backends

List of authentication and authorisation backends to use.

Other databases than rabbit_auth_backend_internalare available through plugins.

Default: [rabbit_auth_backend_internal]

reverse_dns_lookups 设置为true,让RabbitMQ对客户端连接执行反向DNS查找,并通过rabbitmqctl和管理插件呈现该信息。

Default: false

delegate_count 用于集群内部通信的委托进程的数量。当为多核CPU时可以考虑设置该值

Default: 16

trace_vhosts Used internally by the tracer. 通常情况下不需要设置该参数

Default: []

tcp_listen_options 默认的套接字选项。通常情况下不需要设置该参数

Default:

[{backlog,       128},
{nodelay, true},
{linger, {true,0}},
{exit_on_close, false}]
hipe_compile 设置为true,使用HiPE预编译RabbitMQ的部分,这是Erlang的即时编译器。这将增加服务器的吞吐量,以增加启动时间的成本。

您可能会看到,在启动时延迟几分钟,您的性能会提高20-50%。这些数据是高度工作负载和硬件依赖的。

HiPE支持可能不会编译到您的Erlang安装中。如果不是这样,启用这个选项只会导致一个警告消息被显示,而启动将照常进行。例如,Debian/Ubuntu用户需要安装erlangbase-base-hipe包。

HiPE在某些平台上是不可用的,尤其是Windows。

HiPE在17.5之前就已经知道了erlangp/otp版本的问题。HiPE推荐使用最新的erlangp/otp版本

Default: false

cluster_partition_handling 如何处理网络分区。可用模式:

  • ignore
  • pause_minority
  • {pause_if_all_down, [nodes], ignore | autoheal}
    (例: ['rabbit@node1', 'rabbit@node2'])
  • autoheal

详情请看documentation on partitions

Default: ignore

cluster_keepalive_interval 节点应该多频繁地将keepalive消息发送到其他节点(以毫秒为单位)。请注意,这与netticktime不一样; 错过的keepalive消息不会导致节点被认为挂机。

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_retry_limit 在等待集群中的Mnesia tables可用时,需要重试的次数。

Default: 10

mnesia_table_loading_retry_timeout 在集群中等待每个重试的时间,以便可用

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">>

lazy_queue_explicit_gc_run_operation_threshold

调优: 只有在内存压力下有延迟队列时。

    这是触发垃圾收集器和其他内存减少活动的阈值。一个低的值可以降低性能,一个高的值可以提高性能,但是会导致更高的内存消耗。通常情况下不需要设置该参数

Default: 1000

queue_explicit_gc_run_operation_threshold

调优: 在内存压力较大时。

      这是触发垃圾收集器和其他内存减少活动的阈值。一个低的值可以降低性能,一个高的值可以提高性能,但是会导致更高的内存消耗。通常情况下不需要设置该参数

Default: 1000

RabbitMQ服务端配置详解的更多相关文章

  1. RabbitMQ服务端配置详解(转自:http://www.cnblogs.com/zhen-rh/p/6884297.html)

    RabbitMQ支持三种配置方式: 1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量 可配置如 ...

  2. ubuntu14.04 server ftp 服务安装配置详解

    ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...

  3. nfs服务端配置文件详解

    配置参数语法 配置文件路径 /etc/exports 可以使用#进行注释说明 一个完整的配置实例至少需要3个参数 1.被共享的目录 必须是存在的目录 2.向谁共享 可以指定主机或网络范围,支持通配符* ...

  4. Appium Windows服务端GUI详解

    Appium Windows服务端GUI各项的解释,从官方扒过来的,界面图标和最新版本有点不太一样,其他还是比较简单易懂的 原文https://github.com/appium/appium-dot ...

  5. NodeJS+Express+mySQL服务端开发详解

    随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科 本文是利用NodeJS+ ...

  6. OpenVPN CentOS7 安装部署配置详解

    一 .概念相关 1.vpn 介绍 vpn 虚拟专用网络,是依靠isp和其他的nsp,在公共网络中建立专用的数据通信网络的技术.在vpn中任意两点之间的链接并没有传统的专网所需的端到端的物理链路,而是利 ...

  7. 阿里云slb和ucloud负载均衡ulb添加ssl证书将http服务https化的配置详解

    阿里云和ucloud服务器配置ssl证书将http服务https化的配置详解 项目背景: 苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HT ...

  8. CentOS学习之NTP服务配置详解

    详解centos7下ntp服务配置 一.ntp服务是什么 1.定义 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 2.发展 首次记载在 ...

  9. 大数据学习day11------hbase_day01----1. zk的监控机制,2动态感知服务上下线案例 3.HDFS-HA的高可用基本的工作原理 4. HDFS-HA的配置详解 5. HBASE(简介,安装,shell客户端,java客户端)

    1. ZK的监控机制 1.1 监听数据的变化  (1)监听一次 public class ChangeDataWacher { public static void main(String[] arg ...

随机推荐

  1. ReactiveX 学习笔记(21)使用 Rx.NET + ReactiveUI 进行 GUI 编程

    课题 程序界面由3个文本编辑框和1个文本标签组成. 要求文本标签实时显示3个文本编辑框所输入的数字之和. 文本编辑框输入的不是合法数字时,将其值视为0. 3个文本编辑框的初值分别为1,2,3. 创建工 ...

  2. 使用PandoraBox时的软件源配置

    src/gz 18.12_core http://downloads.pangubox.com:6380/pandorabox/18.12/targets/ralink/mt7621/packages ...

  3. ELK收集Nginx|Tomcat日志

    1.Nginx 日志收集,先安装Nginx cd /usr/local/logstash/config/etc/,创建如下配置文件,代码如下 Nginx.conf input { file { typ ...

  4. html阿里云网页练习实现代码

    html <body>     <!-- 固定浮动栏 -->     <div class="guding">         <p> ...

  5. tensorflow 1.9 ,bazel 0.15.0,源码编ERROR, Skipping, '//tensorflow/tools/pip_package:build_pip_package',error loading packageCuda Configuration Error, Cannot find libdevice.10.bc under /usr/local/cuda-8.0

    最近在看tensorflow 移动端部署,需要编译源码才支持,所以又拾起来了编译这项老工作,其中遇到问题: bazel build --cxxopt="-D_GLIBCXX_USE_CXX1 ...

  6. window.location.href 页面不跳转解决

    function login() { var userid = $("#username").val(); var userpwd = $("#pwd").va ...

  7. SpringMVC不能引入静态资源

    SpringMVC不能引入静态资源 问题:部署项目后程序加载或用浏览器访问时出现类似的警告, 2011-01-19 10:52:51,646 WARN [org.springframework.web ...

  8. C语言输出格雷码

    格雷码是以n位的二进制来表示数. 与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同. 首尾两个数字也要求只有1位之差. 有很多算法来生成格雷码.以下是较常见的一种: 从编码全0开始生成 ...

  9. windows下Anaconda的安装与配置正解

    一.下载anaconda 第一步当然是下载anaconda了,官方网站的下载需要用迅雷才能快点,或者直接到清华大学镜像站下载. 清华大学提供了镜像,从这个镜像下载速度很快,地址: https://mi ...

  10. windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效

    摘自:https://www.landui.com/help/show-7787 初次看到这个错误的时候懵了.访问给的地址一看,发现大概意思是不安全了,微软要更新一下 凭据安全支持提供程序协议 (Cr ...