RabbitMQ 教程

配置运行时参数

RabbitMQ 中的绝大多数配置都可以通过修改 rabbitrnq.config 配置文件来实现,但是其中有些配置并不太适合在 rabbitmq.config 配置文件中去实现。

例如:某项配置不需要同步到集群中的其它节点,或者某项配置需要在运行时更改(因为修改 rabbitmq.config 配置需要重启 Broker 才能生效)。这种类型的配置在 RabbitMQ 中的另一种称呼为参数(Parameter),也可以称之为运行时参数(Runtime Parameter)。

RabbitMQ 的运行时参数可以通过 rabbitmqctl 工具或者 RabbitMQ Management 插件提供的 HTTP API 接口来设置。RabbitMQ 中一共有两种类型的运行时参数:

  • vhost 级别的运行时参数:vhost 级别的运行时参数由一个组件名称(component name)、名称(name)和值(value)组成。

  • global 级别的运行时参数:而 global 级别的参数由一个名称(name)和值(value)组成。

注意:不管是 vhost 级别还是 global 级别的运行时参数,其所对应的值都是 JSON 类型的。

vhost 级别的运行时参数对应的 rabbitmqctl 如下三个命令:

set_parameter

用来设置一个参数,命令格式:

rabbitmqctl set_parameter [-p vhost] {component_name} {name} {value}

示例:演示 Federation upstream的运行时参数设置,需要先开启 rabbitmq_federation 插件。

# 启动 rabbitmq_federation 插件
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmq-plugins.bat enable rabbitmq_federation
Enabling plugins on node hello@hxstrive:
rabbitmq_federation
The following plugins have been configured:
  rabbitmq_federation
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to hello@hxstrive...
The following plugins have been enabled:
  rabbitmq_federation

started 1 plugins.

# 为 federation-upstream 组件添加 my-upstream 参数
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_parameter federation-upstream my-upstream "{""uri"":""amqp://target.hostname"",""expires"":3600000}"
Setting runtime parameter "my-upstream" for component "federation-upstream" to "{"uri":"amqp://target.hostname","expires":3600000}" in vhost "/" ...

list_parameters

用来列出指定虚拟主机上所有的运行时参数,命令格式:

rabbitmqctl list_parameters [-p vhost]

示例

(1)默认将列出默认虚拟主机下面的运行时参数

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_parameters
Listing runtime parameters for vhost "/" ...
component       name    value
federation-upstream     my-upstream     {"expires":3600000,"uri":"amqp://target.hostname"}

(2)列出 vhost1 虚拟主机下面的运行时参数

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_parameters -p vhost1
Listing runtime parameters for vhost "vhost1" ...
component       name    value
federation-upstream     my-upstream2    {"expires":3600000,"uri":"amqp://target.hostname"}

clear_parametera

用来清除指定的运行时参数,命令格式:

rabbitmqctl clear_parameter [-p vhost] {componenet_name} {key}

例如:清除 vhost1 虚拟主机下 federation-upstream 组件中的 my-upstream2 运行时参数

# 清理 vhost1 虚拟机下 federation-upstream 中的 my-upstream2 运行时参数
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl clear_parameter -p vhost1 federation-upstream my-upstream2
Clearing runtime parameter "my-upstream2" for component "federation-upstream" on vhost "vhost1" ...

# 验证清除结果
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_parameters -p vhost1
Listing runtime parameters for vhost "vhost1" ...

HTTP API 接口

下面是与 rabbitmqctl 工具相对应的 HTTP API 接口如下:

设置一个参数

使用 HTTP 的 PUT 方法访问接口设置运行时参数,如下图:

上图中,将在 vhost1 虚拟机下面创建名为 myName 的运行时参数,参数值为“{"expires":3600000,"uri":"amqp://target.hostname"}”。

注意,调用 API 创建运行时参数需要授权(用户名密码均为 guest),授权采用 HTTP 基础授权方式,如下图:

清除一个参数

使用 HTTP 的 DELETE 方法访问接口从 RabbitMQ 中删除运行时参数,如下图:

注意,删除运行时参数也需要进行授权,采用 HTTP 基础授权方式,用户名和密码均为 guest。

列出所有参数

使用 HTTP 的 GET 方法访问接口获取所有参数,如下图:

如果仅想查询指定组件下面的运行时参数,可使用方式,例如:

http://localhost:15672/api/parameters/federation-upstream

上面 URL 将获取 federation-upstream 组件下面的所有运行时参数。

如果想查询指定组件在指定虚拟机下面的运行时参数,可使用方式,例如:

http://localhost:15672/api/parameters/federation-upstream/vhost1

上面 URL 将获取 federation-upstream 组件下面,在 vhost1 虚拟机中的运行时参数。

如果想查询指定组件下、指定虚拟机中的某个参数信息,可使用 / 方式,例如:

http://localhost:15672/api/parameters/federation-upstream/vhost1/my-upstream2

上面 URL 将获取 federation-upstream 组件下面,在 vhost1 虚拟机中的 my-upstream2 运行时参数

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号