Bootstrap

RabbitMQ(七) - RabbitMQ配置

一般情况下,可以使用默认的内建配直未有效地运行 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 。

;