StupidBeauty
Read times:3083Posted at: - no title specified

RabbitMQ文档翻译:配置,Configuration

RabbitMQ包含了一组内置的默认设置,这些设置,已经足够让妳的RabbitMQ 服务器高效运行了。如果它确实运行得狠好,那么,妳就不需要再做什么配置了。

如果妳面临着其它的限制,那么,RabbitMQ提供了三种常规的方式来对服务器进行自定义:

环境变量

定义端口号、文件位置和名字(从终端中读取,或者通过 rabbitmq-env.conf 文件设置)

一个配置文件

定义了服务器组件设置信息,包括权限、限制、集群和插件。

运行 时参数和策略

定义了集群级别的设置信息,可在运行时改变。

验证配置

当前的活跃配置信息,可在转发器的日志中看到,例如,当前的活跃配置文件是:

config file(s) : /etc/rabbitmq/rabbitmq.config

会出现在 日志文件 中。

自定义RabbitMQ环境变量

Unix (通用)

在基于 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_ 。一个典型的变量,假设其名为 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

  • •. Unix*:

在运行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.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 不同,后者,可以用来设置环境变量。

rabbitmq.config 和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.config文件

我们随着RabbitMQ 服务器附带了一个示例配置文件,名为 rabbitmq.config.example 。这个示例文件中,包含了妳可能会用到的大部分配置项(省略了某些狠少用到的项目)以及这些选项的文档。在示例文件中,所有的配置项都被注释掉了,妳可以对妳所需要的那些条目解除注释。

在大部分发行版中,我们将这个示例文件放置在真正文件应当被放置的位置(参考上文说明)。然而,DebianRPM发行版是禁止这样做的;所以,妳将分别在 /usr/share/doc/rabbitmq-server/ /usr/share/doc/rabbitmq-server-3.5.6/ 找到它。

rabbitmq.config中可配置的变量

大部分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 opinions

Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands