rabbitmq基础配置中文说明文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rabbitmq基础配置中文说明文档相关的知识,希望对你有一定的参考价值。

参考技术A 本文为官方文档翻译版本 rabbitmq3.7.5版本,原地址: https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example 。以#开头的行为配置,key和等号以及value之间尽量保持有一个空格。以下的"默认"指的为在没有添加配置文件或者该key没有配置。

rabbitmq是使用基于tcp的amqp协议通信(如果需要ssl,可参考 这里 ),所以这里都是监听的tcp的端口。rabbitmq支持监听多端口,并支持指定网卡的ipv4和ipv6。格式为listeners.tcp.$name = $value,name可以是任意不重复的值,如:defaul、local、local_v6等。value的格式有:

(1)包括了(2)和(3),(2)包括了(4)和(6),(3)包括了(5)和(7)。下面对应的为其中情况的配置,按需求进行配置,不需要都配,大部分情况只配置(1)。默认的配置为listeners.tcp.default = 5672
例:

接受TCP侦听器连接的Erlang进程数。一旦打开了一个使用tcp连接的套接字,它就始终保持打开状态,直至任何一方关闭它或因为一个错误而终止。在建立一个连接时,一般为每一次请求产生一个新进程,num_acceptors就是控制产生新进程的个数。假设有一个监听进程,其任务是等待传入的tcp请求。只要一个请求到达,响应该连接请求的进程就变成了接收进程。默认的配置为num_acceptors.tcp = 10。
例:

AMQP 0-9-1握手(socket连接和TLS握手之后)的最大时间,以毫秒为单位。
默认的配置为handshake_timeout = 10000。
例:

设置为'true'以在接受一个连接时执行反DNS反查询。 在rabbitmqctl中和web管理中将显示主机名称而不是IP地址。默认的配置为reverse_dns_lookups = true。
例:

开启后的效果

仅允许通过本地(即localhost)连接到代理的用户列表。如果您希望允许guest用户远程连接,则需要将其更改为 loopback_users = none。
要将其他用户限制为仅限localhost的连接,请像这样执行(monitoring是用户的名称): loopback_users.monitoring = true。默认的配置为loopback_users.guest = true。推荐设置loopback_users.guest = false。
例:

关于ssl的配置,内容比较多,参考 官网 。默认不配置。

选择要使用的认证/授权后端。可以配置ldap相关的设置。具体可以参考 access-control 。internal为由rabbitmq内部处理,默认的配置为 auth_backends.1 = internal。
例:

RabbitMQ具有对各种SASL认证机制的可插拔支持。服务器内置了三种这样的机制:PLAIN,AMQPLAIN和RABBIT-CR-DEMO,以及EXTERNAL 可作为 插件使用 。您还可以通过 在插件中实现rabbit_auth_mechanism行为来实现自己的身份验证机制。有关常规插件开发的更多信息,请参阅 插件开发指南 。默认的配置为PLAIN和AMQPLAIN。
内置的机制:

例:

有关rabbitmq-auth-mechanism-ssl插件的配置,查看: https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl

SSL handshake超时时间,毫秒为单位。默认的配置为ssl_handshake_timeout = 5000

例:

rabbitmq的用户的密码加密算法。修改该值只会影响新创建的用户,对应老用户需要重置密码进行更新。一般情况下不更改。默认的配置为password_hashing_module = rabbit_password_hashing_sha256。要使用SHA-512,请设置为rabbit_password_hashing_sha512。
例:

和web端的Import definitions、Export definitions有关。好像没啥用==。

默认的用户及其权限和vhost。如果一个connect没有配置以下的配置,则使用默认值进行连接。

默认用户的tag。默认的配置default_user_tags.administrator = true。一般不需要改。
例:

heartbeat通常用来检测通信的对端是否存活(未正常关闭socket连接而异常crash)。其基本原理是检测对应的socket连接上数据的收发是否正常,如果一段时间内没有收发数据,则向对端发送一个心跳检测包,如果一段时间内没有回应则认为心跳超时,即认为对端可能异常crash了。
rabbitmq也不例外,heatbeat在客户端和服务端之间用于检测对端是否正常,即客户端与服务端之间的tcp链接是否正常。

heartbeat检测时间间隔的设置:

这里要注意的是:如果时间间隔配置为0,则表示不启用heartbeat检测。
例:

设置amqp协议最大允许的字节数。默认的配置为frame_max = 131072(单位为字节,也就是128k),注意该值不要设置过大,如果一条消息比较大(如传输文件),可以通过Publish Confirm和Consumer Acknowledgement机制,如设置过大,那么broker内存会容易被占完。也不要设置过小,保持在128k-1m之间。 引用:使用RabbitMQ传输大文件,保证其完整性
例:

初始化时的最大字节,不知道哪里使用的。原文:Set the max frame size the server will accept before connection tuning occurs。
例:

设置每个连接的最大允许通道数量。 0表示“没有限制”。默认的配置为channel_max = 128。
例:

tcp连接相关的配置。尽量不要改。以下为默认的配置
例:

设置rabbitmq使用内存的阈值。有相对和绝对两种阈值。默认为vm_memory_high_watermark.relative = 0.4。

队列开始将消息导出到光盘来释放内存的高水位限制的值。
例如,当vm_memory_high_watermark被设置为0.4并且该值被设置为0.5时,
可以在节点使用总可用RAM的20%时开始分页。大于1.0的值可能很危险,应谨慎使用。
一种替代方法是使用持久队列并发布消息,作为持久性。 有了这个组合队列将消息更快地移动到磁盘。
另一种方法是配置队列来分页所有消息(都是持久和瞬态)到磁盘。
尽可能参阅 http://rabbitmq.com/lazy-queues.html
例:

内存使用情况报告策略。可以是以下之一,默认的配置为rss:
allocated:使用Erlang内存分配器统计信息
rss:使用操作系统RSS内存报告。这使用特定于操作系统的手段,并可能启动短暂的子进程。
legacy:使用legacy内存报告(运行时考虑使用多少内存)。这个策略相当不准确。
erlang:与legacy相同,为了向后兼容而保留
例:

根据 watermarks检查内存级别。没发现具体作用。
例:

可用内存总量,不使用特定于操作系统的方式从环境中推断内存。 只有当节点可用的实际最大RAM数量与节点将要推断的值不匹配时,才应使用这种方法。 该值可以设置为整数个字节,或者可以以信息单位(例如“8GB”)设置。 例如,当该值设置为4 GB时,该节点会认为它在具有4 GB RAM的计算机上运行。默认不设置该值。
例:

和vm_memory_high_watermark类似,disk_free_limit是控制硬盘的使用阈值。RabbitMQ正在存储数据的分区的磁盘可用空间限制。当可用磁盘空间低于此限制时,将触发流量控制。该值可以相对于RAM的总量或以字节或以信息单位表示的绝对值(例如"50MB"或"5GB"或"5KB")来设置,或者,我们可以设置相对于可用RAM总量的限制。低于1.0的值可能很危险,应谨慎使用。默认为disk_free_limit.absolute = 50MB。
例:

网络分裂。一种在系统的任何两个组之间的所有网络连接同时发生故障后所出现的情况。发生这种情况时,分裂的系统双方都会从对方一侧重新启动应用程序,进而导致重复服务或裂脑。由网络分裂造成的最为严重的问题是它会影响共享磁盘上的数据。默认为ignore模式。如何处理网络分裂?详细的文档可以参考 官网文档
可用的模式是:

在消息中镜像同步批量大小。增加这将加快同步,但批量总大小(以字节为单位)不得超过2 GiB。该设置可用于RabbitMQ 3.6.0或更高版本。默认的配置为 mirroring_sync_batch_size = 4096(4k)。
例:

集群相关的配置,为了形成一个集群,新的(“空白”)节点需要能够发现他们的同伴。这可以使用各种机制(后端)来完成。有些机制假定所有集群成员都提前知道(例如,在配置文件中列出),其他机制是动态的(节点可以动态增删)。
内置的发现机制如下:

cluster_formation.node_type:节点类型。默认为disc。
cluster_keepalive_interval:像集群里的其他子节点发送存活消息的间隔(毫秒)。默认为cluster_keepalive_interval = 10000

统计相关,与web管理插件显示有关。可配置的值如下:

例:

设置为true,以便使用HiPE预编译RabbitMQ的部分,这是Erlang的即时编译器。 这会以增加启动时间为代价来提高服务器吞吐量。
您可能会看到启动时延迟几分钟的成本提高20-50%。 这些数据非常依赖于工作负载和硬件。
HiPE支持可能不会编译到您的Erlang安装中。 如果不是,启用此选项只会导致显示一条警告消息,启动将按正常进行。 例如,Debian / Ubuntu用户需要安装erlang-base-hipe软件包。

HiPE在某些平台上完全不可用,特别包括Windows。

HiPE在17.5之前的Erlang / OTP版本中存在已知问题。 HiPE强烈建议使用最新的Erlang / OTP版本。默认的配置为hipe_compile = false。

等待集群中的Mnesia tables变得可用时使用的超时。默认的配置mnesia_table_loading_retry_timeout = 30000。

在等待集群中的Mnesia tables可用时,需要重试的次数。默认的配置mnesia_table_loading_retry_limit = 10。

在消息的字节数中,消息将被直接嵌入到队列索引中。详情请看 persister tuning 。默认的配置queue_index_embed_msgs_below = 4096。

是否启用后台定期强制GC为“等待”状态运行节点上的所有Erlang进程。
禁用后台GC可以减少客户端操作的延迟,保持启用状态可以减少二进制堆的RAM使用量(请参阅 https://www.erlang-solutions.com/blog/erlang-garbage-collector.html )。
在尝试此选项之前,请查看内存( http://www.rabbitmq.com/memory-use.html )。
默认的配置background_gc_enabled = false,当配置为true时,可以设置gc的间隔,默认的配置为background_gc_target_interval = 60000(毫秒)。

设置是否启用代理,启用后不能直连到broker。默认的配置proxy_protocol = false。

未知

有关web管理后台的配置。

查看 http://www.rabbitmq.com/stomp.html 。

http://www.rabbitmq.com/mqtt.html

查看 https://github.com/rabbitmq/rabbitmq-amqp1.0

查看 http://rabbitmq.com/ldap.html 。

以上是关于rabbitmq基础配置中文说明文档的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ简单使用

RabbitMQ基础概念详解——环境配置及模拟生产者和消费者简单消息发送

RabbitMQ笔记SpringBoot整合RabbitMQ之simple容器(消费者)

RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

RabbitMQ配置负载均衡的意义及RabbitMQ集群是否可以随意使用

windows下安装配置RabbitMQ