RabbitMQ文档翻译:配置,Configuration
RabbitMQ包含了一组内置的默认设置,这些设置,已经足够让妳的RabbitMQ 服务器高效运行了。如果它确实运行得狠好,那么,妳就不需要再做什么配置了。
如果妳面临着其它的限制,那么,RabbitMQ提供了三种常规的方式来对服务器进行自定义:
定义端口号、文件位置和名字(从终端中读取,或者通过 rabbitmq-env.conf 文件设置)
定义了服务器组件设置信息,包括权限、限制、集群和插件。
定义了集群级别的设置信息,可在运行时改变。
当前的活跃配置信息,可在转发器的日志中看到,例如,当前的活跃配置文件是:
config file(s) : /etc/rabbitmq/rabbitmq.config
会出现在 日志文件 中。
在基于 Unix 的系统 (包括Linux) 中,妳可以创建/编辑 rabbitmq-env.conf 文件 , 以定义环境变量。 它的 位置 本身 不可配置 ( 这与 rabbitmq.config 不同 ) 。
使用标准的环境变量名字(但去掉RABBITMQ_前缀),例如:
#示例rabbitmq-env.conf文件条目
#将节点重命名
NODENAME=bunny@myhost
#配置文件位置及新文件名bunnies.config
CONFIG_FILE=/etc/rabbitmq/testdir/bunnies
更多 关于rabbitmq-env.conf 的信息 。
RabbitMQ的环境变量名字,都有前缀 RABBITMQ_ 。一个典型的变量,假设其名为 RABBITMQ_ var_name ,是按照以下方式来设置的:
•.如果终端中定义了一个名为 RABBITMQ_ var_name 的环境变量,则会使用它;
•. 否则,如果 rabbitmq-env.conf 文件 中设置了一个名为var_name的变量,则会使用它;否则 , 会使用一个由系统指定的默认值。
通过这种实现,使得,在终端中设置的环境变量,其优先级比 rabbitmq-env.conf 中设置的变量的优先级要高,而后者又比RabbitMQ 中内置的默认值的优先级要高。
一般情况下,妳并不需要将所有的这些环境变量都设置好。如果妳有某些非标准的需求,那么,以下列出常见的RabbitMQ 环境变量,但这并不是所有环境变量的列表:
名字 |
默认值 |
说明 |
RABBITMQ_NODE_IP_ADDRESS |
空白字符串——意思是,绑定到所有的网络接口上去。 |
如果妳只想绑定到某一个网络接口,则修改这个变量的值。若想绑定到两个或多个接口,则使用 rabbitmq.config 中的 tcp_listeners 选项。 |
RABBITMQ_NODE_PORT |
5672 |
|
RABBITMQ_DIST_PORT |
RABBITMQ_NODE_PORT + 20000 |
用于集群的端口。如果妳的配置文件中设置了 inet_dist_listen_min 或 inet_dist_listen_max ,则忽略这个变量。 |
RABBITMQ_NODENAME |
Unix*: rabbit@ $HOSTNAME |
对于每个erlang节点与机器(erlang-node-and-machine)组合,节点名字应当是唯一的。要想运行多个节点,则参考 集群指南 。 |
RABBITMQ_USE_LONGNAME |
如果设置为真( true ),则会导致RabbitMQ使用完整名字来标识节点。这个选项在 EC2 上狠有用。注意,要想在短名字模式和长名字模式之间切换的话,必须重置节点。 |
|
RABBITMQ_CTL_ERL_ARGS |
无 |
在运行 rabbitmqctl 时,传递给 erl 命令的参数。只应当在调试时才覆盖这个变量的值。 |
RABBITMQ_SERVER_ERL_ARGS |
Unix*: "+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]" |
在运行RabbitMQ 服务器的时候,传递给 erl 命令的标准参数。只应当在调试时才覆盖这个变量的值。覆盖这个变量的话,会 替换掉 默认值。 |
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS |
|
在运行RabbitMQ 服务器的时候,传递给 erl 命令的额外参数。这个变量的值,会被 追加 到默认参数列表( RABBITMQ_SERVER_ERL_ARGS )中。 |
RABBITMQ_SERVER_START_ARGS |
无 |
在运行RabbitMQ 服务器的时候,传递给 erl 命令的额外参数。它不会覆盖 RABBITMQ_SERVER_ERL_ARGS 。 |
* Unix, Linux
另外 ,还有一些环境变量,它们控制 着RabbitMQ 该将数据库、日志文件、插件、配置文件放置到哪里 。
RabbitMQ 还依赖以下变量:
名字 |
默认值 |
说明 |
HOSTNAME |
Unix, Linux: `env hostname` |
当前机器的名字 |
通过配置文件 rabbitmq.config ,可以 对RabbitMQ 核心程序、Erlang 服务和RabbitMQ 插件进行配置。 它是一个标准的 Erlang配置文件 , 可在 Erlang配置文件手册 页 找到它的文档。
以下是一个示例配置文件:
[
{mnesia, [{dump_log_write_threshold, 1000}]},
{rabbit, [{tcp_listeners, [5673]}]}
].
这个示例配置文件,会改变mnesia 的dump_log_write_threshold 选项(相对于默认值100 增大了),还会将RabbitMQ 监听的端口从5672 修改成5673。
这个配置文件与 rabbitmq-env.conf 不同,后者,可以用来设置环境变量。
这些文件的位置,是取决于不同的发行版的。默认情况下,它们不会被创建,但是,在各个平台上,会预期着它们位于以下位置:
•. 通用UNIX - $RABBITMQ_HOME /etc/rabbitmq/
•. Debian - /etc/rabbitmq/
•. RPM - /etc/rabbitmq/
如果rabbitmq-env.conf 不存在,那么,只能在默认位置手动创建。
如果rabbitmq.config 不存在,那么,可以手动创建。如果妳不是在默认位置创建它的,那么,需要设置 RABBITMQ_CONFIG_FILE 环境变量。Erlang运行时会自动将.config扩展名追加到这个变量的值中去。
修改完毕之后,重启服务器。
我们随着RabbitMQ 服务器附带了一个示例配置文件,名为 rabbitmq.config.example 。这个示例文件中,包含了妳可能会用到的大部分配置项(省略了某些狠少用到的项目)以及这些选项的文档。在示例文件中,所有的配置项都被注释掉了,妳可以对妳所需要的那些条目解除注释。
在大部分发行版中,我们将这个示例文件放置在真正文件应当被放置的位置(参考上文说明)。然而,Debian和RPM发行版是禁止这样做的;所以,妳将分别在 /usr/share/doc/rabbitmq-server/ 或 /usr/share/doc/rabbitmq-server-3.5.6/ 找到它。
大部分RabbitMQ 用户永远都不需要修改以下任何的值,并且,其中的某些选项是狠罕见的。然而,为了完整性,在此将它们悉数列出。
键 |
文档 |
tcp_listeners |
要用来监听AMQP 连接(不使用SSL)的端口列表。可包含整数(表示“监听所有接口”)或者像 {"127.0.0.1", 5672} 这样的元组,用来监听一个或多个接口。 默认值: [5672] |
handshake_timeout |
AMQP 0-8/0-9/0-9-1 握手(在套接字连接和SSL握手之后)的最长时间,以毫秒为单位。 默认值: 10000 |
ssl_listeners |
参考前文,不过这是针对SSL连接的。 默认值: [] |
ssl_options |
SSL配置。参考 SSL文档 。 默认值: [] |
ssl_handshake_timeout |
SSL握手超时时间,以毫秒为单位。 默认值: 5000 |
vm_memory_high_watermark |
内存占用量阈值,达到这个内存占用量时,会触发流量控制。参考 以内存占用量为依据的流量控制 文档。 默认值: 0.4 |
vm_memory_high_watermark_paging_ratio |
最高内存占用量限制比例,达到这个内存占用量时,各个队列会开始将消息通过换页放入磁盘,以释放内存空间。参考 以内存占用量为依据的流量控制 文档。 默认值: 0.5 |
disk_free_limit |
RabbitMQ 用来存储数据的分区的硬盘空余空间限制。如果可用的硬盘空间低于这个值了,则,会触发流量控制。这个值,可以设置为相对于内存数量的某个比例(例如, {mem_relative, 1.0})。也可以设置成一个整数,表示总的字节数。默认情况下,空闲硬盘空间必须大于50MB。参考 以内存占用量为依据的流量控制 文档。 默认值: 50000000 |
log_levels |
控制日志的颗粒度。这个值,是一个列表,其中每个元素是由日志事件类型和日志级别组成的一个值对。 日志级别,可以是:'none' (不记录日志);'error' (只记录错误信息);'warning' (只记录错误信息和警告信息);'info' (错误、警告和辅助性信息);或,'debug' (错误、警告、辅助性和调试信息)。 目前,定义了四种分类。其它分类,也就是当前未分类的信息,都一定会记录。 有这些分类: channel - 所有与AMQP 频道相关的事件 connection - 所有与网络连接相关的事件 federation - 所有与 联盟 相关的事件 mirroring - 所有与 镜像队列 相关的事件 默认值: [{connection, info}] |
frame_max |
要与客户端协商的允许的最大的帧长度(字节)。设置为0则表示"无限制",但是会在某些QPid 客户端中触发一个问题。设置为一个较大的值的话,可能会提升吞吐量;设置为一个较小的值的话,可能会提升时延特性。 默认值: 131072 |
channel_max |
要与客户端协商的允许的最大频道个数。设置为0则表示"无限制"。频道个数的增加,会引起转发器的内存占用量增加。 默认值: 0 |
heartbeat |
以秒数表示的心跳延迟时间,服务器会通过 connection.tune 帧来发送这个值。如果设置为0,则会禁用心跳。客户端可能不会按照服务器建议的值来工作,参考 AMQP参考手册 以了解更多细节。禁用心跳的话,在连接数特别多的情况下,会提升性能,但是,可能会因为某些网络设备关闭非活跃连接而导致连接断开。 默认值:580 |
default_vhost |
RabbitMQ 从头开始创建一个新的数据库的时候,所要伴随而创建的虚拟主机。交换机 amq.rabbitmq.log 会存在于这个虚拟主机中。 默认值: <<"/">> |
default_user |
RabbitMQ 从头开始创建一个新的数据库的时候,所要伴随而创建的用户名。 默认值:<<"guest">> |
default_pass |
默认用户的密码。 默认值: <<"guest">> |
default_user_tags |
默认用户的标签。 默认值:[administrator] |
default_permissions |
创建默认用户 时,要赋予的 权限 。 默认值: [<<".*">>, <<".*">>, <<".*">>] |
loopback_users |
仅仅允许通过环回网络接口(即 localhost )连接到此转发器的用户的列表。 . 如果妳想要允许默认的 guest 用户通过远程网络连接到此转发器,则,需要将这个配置项修改成 [] 。 默认值:[<<"guest">>] |
cluster_nodes |
设置这个选项,会导致,当某个节点第一次启动时, 自动进行 集群操作。此元组中的第一个元素,即为此节点要与之组成集群的那些节点。第二个元素,取值可以 disc 是或 ram ,它确定了节点的类型。 默认值:{[], disc} |
server_properties |
要在连接时向客户端发布的键值对列表。 默认值:[] |
collect_statistics |
统计信息收集模式。主要与管理插件相关。有以下可选项: none (不发送统计事件) coarse (发送单个队列/单个频道/单个连接的统计事件) fine (另外还发送单条消息的统计事件) 一般情况下,妳不应当改变这个选项。 默认值: none |
collect_statistics_interval |
编译信息收集的时候间隔,以毫秒为单位。主要与 管理插件 相关。 默认值: 5000 |
auth_mechanisms |
要向客户端提供的 SASL认证机制 。 默认值:['PLAIN', 'AMQPLAIN'] |
auth_backends |
要使用的认证/授权数据库列表。这个列表,包含的是:模块名字(在这种情况下,同一个模块既用于认证也用于授权);或,二元组,例如, {ModN, ModZ} ,其中, ModN 被用于认证, ModZ 被用于授权。 对于二元组的情况,ModZ可被替换为一个列表,那样的话,对于每个授权查询,都必须得到该列表中 全部 元素的确认,例如 {ModN, [ModZ1, ModZ2]} 。这样就允许授权插件组合到一起,从而提供额外的安全保障。 rabbit_auth_backend_internal之外的数据库,可通过 插件 来使用。 默认值:[rabbit_auth_backend_internal] |
reverse_dns_lookups |
设置为真( true ),则会令RabbitMQ在接收到客户端连接时进行一个反向DNS查询,并且通过 rabbitmqctl 和管理插件来呈现这个信息。 默认值:false |
delegate_count |
用于集群间通信的代理进程的数量。如果某台机器拥有狠多处理器内核,并且又是某个集群中的成员,那么,妳可以考虑增加这个值。 默认值:16 |
trace_vhosts |
默认值:[] |
tcp_listen_options |
默认套接字选项。妳一般不需要修改这个选项。 默认值: [binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}] |
hipe_compile |
设置为真( true ),则会使得使用高性能Erlang编译器(High Performance Erlang compiler)来对RabbitMQ 中的某些部分进行预编译。这会提高服务器处理消息的速率,也会增加启动时间。 妳可能会观察到启动时增加了一分钟的延迟,换来20-50%的性能提升。具体指标会与负载量和硬件高度相关。 妳所安装的Erlang,可能并未提供对于高性能Erlang 编译器(HiPE)的支持。如果它确实不支持的话,那么,启用这个选项之后,只会引起在启动时显示一条警告信息,而不会对启动过程产生实质性的影响。例如,Debian / Ubuntu用户就需要安装 erlang-base-hipe 这个包。 这个选项,应当被认为是 实验 性的 。如果妳的Erlang虚拟机发生了段错误,那么,请禁用这个选项。 默认值:false |
cluster_partition_handling |
如何处理网络隔断(network partitions)。有以下模式可选: ignore pause_minority {pause_if_all_down, [nodes], ignore | autoheal}其中[nodes] 是一个节点名字列表(例如:['rabbit@node1', 'rabbit@node2']) autoheal 参考 网络隔断处理 以了解更多信息。 默认值:ignore |
cluster_keepalive_interval |
节点应当以什么频率向其它节点发送保持连接消息(以毫秒为单位)。注意,这个选项与 net_ticktime 不同;丢失的保持连接消息,并不会导致节点被认为是下线了。 默认值: 10000 |
queue_index_embed_msgs_below |
尺寸小于这个值的消息,会被直接嵌入到队列索引中。在修改这个参数之前,建议妳先阅读 持久 器调优 文档。 默认值:4096 |
msg_store_index_module |
队列索引的实现模块。在修改这个参数之前,建议妳先阅读 持久 器调优 文档。 默认值:rabbit_msg_store_ets_index |
backing_queue_module |
队列内容的实现模块。妳一般不需要修改这个。 默认值:rabbit_variable_queue |
msg_store_file_size_limit |
持久器的可调优值。妳真的不需要修改这个。 默认值:16777216 |
mnesia_table_loading_timeout |
等待集群中的Mnesia 表进入可用状态的超时时间。 Default: 30000 |
queue_index_max_ journal_entries |
持久器的可调优值。妳真的不需要修改这个。 默认值: 65536 |
另外,狠多插件都会向配置文件中加入区节,其名字的形式为 rabbitmq_ plugin 。我们所维护的插件,其文档可通过以下链接来访问:
Your opinionsHxLauncher: Launch Android applications by voice commands