运行时参数
概述
虽然 RabbitMQ 的大部分配置都位于配置文件中,但有些配置项与使用配置文件并不兼容。
- 如果它们需要在集群中的所有节点上保持一致
- 如果它们很可能在运行时发生变化
RabbitMQ 将这些项称为参数。可以通过调用rabbitmqctl 或通过HTTP API 来设置参数。
参数有两种类型:虚拟主机范围的参数和全局参数。前者顾名思义,与某个虚拟主机关联,由组件名称、名称和值组成。
例如,动态Shovel 是使用运行时参数定义的。它属于一个虚拟主机,有一个标识它的名称,其组件类型设置为"shovel"。
全局参数不与特定虚拟主机关联,它们由名称和值组成。
参数使用的一个重要示例是策略。
每个虚拟主机参数
如上所述,有 vhost 范围的参数和全局参数。vhost 范围参数的一个例子是 Federation Upstream:它指向一个组件(federation-upstream),有一个标识它的名称,它与某个虚拟主机关联(Federation 链接将指向该虚拟主机的某些资源),其值定义了到上游代理的连接参数。
可以设置、清除和列出虚拟主机范围的参数。
- 使用 rabbitmqctl (bash)
- 使用 rabbitmqadmin (bash)
- 使用 rabbitmqctl (PowerShell)
- 使用 rabbitmqadmin (PowerShell)
- HTTP API
# sets a runtime parameter in a virtual host
rabbitmqctl set_parameter [-p vhost] <component_name> <name> <value>
# lists runtime parameters in a virtual host
rabbitmqctl list_parameters [-p vhost]
# clears (unsets) a runtime parameter in a virtual host
rabbitmqctl clear_parameter [-p vhost] <component_name> <name>
# Note: for federation upstreams and shovels, use the dedicated 'federation' and 'shovels' command groups instead
# sets a runtime parameter in a virtual host
rabbitmqadmin --vhost "vhost-1" parameters set \
--name "upstream-1" \
--component "federation-upstream" \
--value '{"uri": "amqp://target.hostname/vhost"}'
# lists runtime parameters in a virtual host
rabbitmqadmin --vhost "vhost-1" parameters list
# clears (unsets) a runtime parameter in a virtual host
rabbitmqadmin --vhost "vhost-1" parameters clear \
--name "upstream-1" \
--component "federation-upstream"
# sets a runtime parameter in a virtual host
rabbitmqctl.bat set_parameter [-p vhost] <component_name> <name> <value>
# lists runtime parameters in a virtual host
rabbitmqctl.bat list_parameters [-p vhost]
# clears (unsets) a runtime parameter in a virtual host
rabbitmqctl.bat clear_parameter [-p vhost] <component_name> <name>
# Note: for federation upstreams and shovels, use the dedicated 'federation' and 'shovels' command groups instead
# sets a runtime parameter in a virtual host
rabbitmqadmin.exe --vhost "vhost-1" parameters set ^
--name "upstream-1" ^
--component "federation-upstream" ^
--value "{""uri"": ""amqp://target.hostname/vhost""}"
# lists runtime parameters in a virtual host
rabbitmqadmin.exe --vhost "vhost-1" parameters list
# clears (unsets) a runtime parameter in a virtual host
rabbitmqadmin.exe --vhost "vhost-1" parameters clear ^
--name "upstream-1" ^
--component "federation-upstream"
PUT /api/parameters/{component_name}/{vhost}/{name}
GET /api/parameters
DELETE /api/parameters/{component_name}/{vhost}/{name}
全局参数
全局参数是另一种类型的参数。全局参数的一个例子是集群的名称。可以设置、清除和列出全局参数。
- 使用 rabbitmqctl (bash)
- 使用 rabbitmqadmin (bash)
- 使用 rabbitmqctl (PowerShell)
- 使用 rabbitmqadmin (PowerShell)
- HTTP API
# sets a global (virtual-host-independent) runtime parameter
rabbitmqctl set_global_parameter <name> <value>
# lists global (virtual-host-independent) runtime parameters
rabbitmqctl list_global_parameters
# clears (unsets) a global (virtual-host-independent) runtime parameter
rabbitmqctl clear_global_parameter <name>
# sets a global (virtual-host-independent) runtime parameter
rabbitmqadmin global_parameters set --name "cluster_tags" --value '{"region": "ca-central-1"}'
# lists global (virtual-host-independent) runtime parameters
rabbitmqadmin global_parameters list
# clears (unsets) a global (virtual-host-independent) runtime parameter
rabbitmqadmin global_parameters clear --name "cluster_tags"
# sets a global (virtual-host-independent) runtime parameter
rabbitmqctl.bat set_global_parameter <name> <value>
# lists global (virtual-host-independent) runtime parameters
rabbitmqctl.bat list_global_parameters
# clears (unsets) a global (virtual-host-independent) runtime parameter
rabbitmqctl.bat clear_global_parameter <name>
# sets a global (virtual-host-independent) runtime parameter
rabbitmqadmin.exe global_parameters set --name "cluster_tags" --value "{""region"": ""ca-central-1""}"
# lists global (virtual-host-independent) runtime parameters
rabbitmqadmin.exe global_parameters list
# clears (unsets) a global (virtual-host-independent) runtime parameter
rabbitmqadmin.exe global_parameters clear --name "cluster_tags"
PUT /api/global-parameters/name
GET /api/global-parameters
DELETE /api/global-parameters/name
由于参数值是 JSON 文档,因此在使用 rabbitmqctl 在命令行上创建参数时,通常需要对其进行引用。在 Unix 系统上,通常最简单的方法是用单引号引用整个文档,并在其中使用双引号。在 Windows 系统上,您必须转义每个双引号。因此,我们提供了 Unix 和 Windows 的示例。
参数驻留在 RabbitMQ 用于定义虚拟主机、交换器、队列、绑定、用户和权限的数据库中。参数与管理插件的导出功能一起导出,与其他对象定义一起导出。
Federation 和 Shovel 插件使用虚拟范围的参数。
全局参数用于存储各种集群级别的元数据,例如集群名称、集群标签,以及内部节点元数据,例如导入的定义的哈希值。
集群名称
集群名称使用全局运行时参数存储。可以使用专用的 CLI 命令更新它。
- 使用 rabbitmqctl (bash)
- 使用 rabbitmqctl (PowerShell)
rabbitmqctl set_cluster_name rabbit@id-3942837
rabbitmqctl.bat set_cluster_name rabbit@id-3942837
集群标签
集群标签是描述集群的任意键值对。运营商可以使用它们来附加特定于部署的信息。
集群标签存储在一个名为 cluster_tags 的全局参数中。它们也可以使用 rabbitmq.conf 预先配置。
cluster_tags.series = 4.1.x
cluster_tags.purpose = iot_ingress
cluster_tags.region = ca-central-1
cluster_tags.environment = production
要检索标签列表,请列出全局运行时参数,或获取名为 cluster_tags 的全局运行时参数,或使用 rabbitmqadmin v2 的 snow overview 命令。
- 使用 rabbitmqctl (bash)
- 使用 rabbitmqadmin (bash)
- PowerShell
- 使用 rabbitmqadmin (PowerShell)
- HTTP API
# lists global (virtual-host-independent) runtime parameters
rabbitmqctl list_global_parameters
# lists global (virtual-host-independent) runtime parameters
rabbitmqadmin global_parameters list
# another command that includes certain global parameters in its
# output, namely node and cluster tags
rabbitmqadmin show overview
# lists global (virtual-host-independent) runtime parameters
rabbitmqctl.bat list_global_parameters
# lists global (virtual-host-independent) runtime parameters
rabbitmqadmin.exe global_parameters list
# another command that includes certain global parameters in its
# output, namely node and cluster tags
rabbitmqadmin.exe show overview
GET /api/global-parameters
GET /api/global-parameters/cluster_tags
策略
策略现已在专门的指南中进行了记录。
运营商策略
运营商策略现已在策略指南中进行了记录。