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. mybatis泛型(一)

    mybatis的确很方便,可以随意配置sql语句,并根据参数生成指定的sql,也可以根据查询结果生成指定对象 但是有一点非常恐怖,就是每个数据库表都必须有一个配置,等于在一个系统里做了很多重复的工作, ...

  2. 550 5.7.1 Client does not have permissions to send as this sender

    收发邮件时出现以上这种情况,系统提示550 5.7.1 Client does not have permissions to send as this sender,这是什么原因赞成的呢? 活动目录 ...

  3. (转)Detect it Easy(壳侦测工具)使用方法介绍

    http://www.ucbug.com/jiaocheng/129805.html Detect it Easy是一个多功能的PE-DIY工具,主要用于壳侦测.功能正日益完善,是不可多得的破解利器! ...

  4. linux下用python搭建简单的httpServer

    1.服务器端:python -m SimpleHTTPServer 12000 python -m :  相当于import,当做模块来启动; 后面的12000代表的是端口 使用浏览器打开如下: 2. ...

  5. 使用idea生成maven项目的jar包(转)

    第一步  第二步  第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651

  6. Excel、VBA与MySQL交互

    本文主要涉及: VBA中的MySQL环境配置 VBA连接MySQL数据库 VBA读写MySQL数据 在Excel中连接MySQL数据库及数据读写 系统环境: Windows 10 Excel 2013 ...

  7. C程序的编译与链接

    编译器驱动程序 编译器驱动程序可以在用户需要时调用语言预处理器.编译器.汇编器和链接器. 例如使用GNU编译系统,我们需要使用如下命令来调用GCC驱动程序: gcc -o main main.c 编译 ...

  8. SSM框架整合思想

    -------------------siwuxie095                                 SSM 框架整合思想         1.SSM 框架,即 SpringMV ...

  9. Error running Tomcat8: Address localhost:xxxx is already in use

    参考自: https://blog.csdn.net/huazhongkejidaxuezpp/article/details/41813683 第一步,命令提示符号,执行命令:netstat -an ...

  10. MySQL优化(五) SQL 语句的优化 索引、explain

    一.索引 1.分类 (1)主键索引:当一张表的某个字段设置为主键时,该字段就是主键索引: (2)唯一索引:索引列中的值必须是唯一的,但是允许为空值(可以存在多个null): (3)普通索引:基本索引类 ...