一般情况下,可以使用默认的内建配直未有效地运行 RabbitMQ ,并且大多数情况下也并不需要修改任何 RabbitMQ 的配直 当然 为了更加有效地操控 Rab itMQ ,也可以利用调节系统范围内的参数来达到定制化的需求。
RabbitMQ 提供了三种方式来定制化服务:
(1)环境变量(Enviroment Variables)。 RabbitMQ 服务端参数可以通过环境变量进行配置,
例如节点名称、 RabbitMQ 配直文件的地址、节点内部通信端口等。
(2)配置文件(Configuration File)。 可以定义 RabbitMQ 服务和插件设置,例如TCP监听端口,以及其他网络相关的设置、内存限制、磁盘限制等。
(3)运行时参数和策略(Runtime Parameters and Policies)。可以在运行时定义集群层面的服务设置。
对于不同的操作系统和不同的 RabbitMQ 安装包来说,相应的配置会有所变化 包括相应的配置文件的地址等,在使用时要尤为注意。
一、环境变量
RabbitMQ 的环境变量都是以“RABBITMQ_’开头的,可以在 shell 环境中设置,也可以在rabbitmq-env.conf 这个 RabbitMQ 环境变量的定义文件中设置。优先级顺序按照shell 环境最优先,其次rabbitmq-env.conf 配置文件,最后是默认的配置。
当采用 rabbitmq-server -detached 启动 RabbitMQ 服务的时候,此服务节点默认以"rabbit@"加上当前的 Shell 环境的 hostname (主机名)来命名,即 rabbit@$HOSTNAME 。
二、Windows的配置文件:
通过访问管理界面,节点详情中可以查到。
示例
下面给出修改服务端口为5673的具体配置,其它配置可以自行查阅资料:
[
{
rabbit,[
{tcp_listeners,[5673]}
]
}
].
- 重启RabbitMQ服务,RabbitMQ的服务端口变为了5673.
- 再将配置文件修改回原样:
[].
- 重启RabbitMQ服务,RabbitMQ的服务端口变回了默认的5672.
三、参数及策略
①运行时参数
RabbitMQ 绝大大多数的配置都可以通过修改配置文件来完成,但是其中有些配置并不太适合在配置文件中去实现,比如某项配置不需要同步到集群中的其他节点中,或者某项配置需要在运行时更改,因为修改配置文件需要重启 Broker 才能生效。
这种类型的配置在 RabbitMQ 中的另一种称呼为参数( Parameter ),也可以称之为运行时参数(Runtime Parameter) 。
Parameter 可以通过 rabbitmqctl 工具或者 RabbitMQ Management 插件提供的 HTTP API接口来设置 RabbitMQ。一共有两种类型的 Parameter: vhost 级别的 Parameter 和global 级别的Parameter。vhost 级别的 Parameter由一个组件名称( component name )、名称( name )和值(value )组成,而 global 级别的参数由一个名称和值组成,不管是 vhost 级别还是 global 级别的参数,其所对应的值都是 JSON 类型的。
vhost 级别的参数对应的 rabb tmqctl 相关的命令有3种: set_parameter、list_parameters 和clear_parameter。
rabbitmqctl set_parameter [-p vhost] {component_name} {name} {value}
用来设置一个参数。
rabbitmqctl list_parameters [-p vhost]
用来列出指定虚 主机上所有的 Parameter。
rabbitmqctl clear_parameter [-p vhost] {componenet_name} {key}
用来清除指定的参数。
与rabbitmqctl 工具相对应的 HTTPAPI 接口如下所述:
设置一个参数 PUT /api/parameters /{componenet_name}/vhost/ name
清除一个参数 DELETE /api/parameters/ {componenet_name} /vost/name
列出指定 host 中的所有参数 GET /api /parameters
②策略
-
rabbitmqctl set_policy [-p vhost] [--priority priority] [--apply-to apply-to] {name} {pattern} {definition}
参数解释:
Virtual host :表示当前 Policy 所在的 vhost 是哪个
Name :表示当前 Policy 的名称
Pattern:一个正则表达式,用来匹配相关的队列或者交换器
Apply to :用来指定当前 Policy 作用于哪一方。一共有三个选项 “ Exchanges and queues" 表示作用与 Pattern 所匹配的所有队列和交换器;“Exchanges ”表示作用于Pattern 所匹配的所有交换器;“Queues ”表示作用于与 Pattern 所匹配的所有队列
Priority :定义优先级。如果有多个 Policy 作用于同一个交换器或者队列,那么Priority 最大的那个 Policy 才会有用
Definition :定义一组或者多组键值对,为匹配的交换器或者队列附加相应的功能
配置策略(Policy)示例:
为所有队列指定超时时间60000毫秒。
rabbitmqctl set_policy TTL ".*" '{ "message-ttl":60000 }'" --apply-to queues
-
rabbitmqctl list_policies [-p vhost]
列出默认vhost 所有的 Policy 。 -
rabbitmqctl clear_policy [-p vhost] {name}
清除指定的 Policy 。