跳至主内容
版本:4.2

HTTP API 参考

简介

这是 RabbitMQ HTTP API 的参考页面。

HTTP API 的客户端库

有几个成熟的 HTTP API 客户端库可用,请参阅 开发者工具

基于 HTTP API 的 CLI 工具

除了客户端库,还有一个专门针对 HTTP API 的 CLI 工具,可用于交互式和脚本使用。

请参阅 rabbitmqadmin v2,一个用于 HTTP API 的命令行工具 以了解更多信息。

概述

所有 HTTP API 端点都将仅提供 application/json 类型的资源,并需要 HTTP 基本身份验证(使用标准的 RabbitMQ 用户数据库)。默认用户是 guest/guest。

许多 URI 需要在路径中包含虚拟主机的名称,因为名称仅在虚拟主机内唯一标识对象。由于默认虚拟主机的名称是 "/",这需要编码为 "%2F"。

PUT 资源会创建它。您上传的 JSON 对象必须具有某些强制键(下面会记录)并且可能包含可选键。其他键将被忽略。缺少强制键将构成错误。

由于 AMQP 中的绑定没有名称或 ID,我们根据其所有属性合成一个。由于在一般情况下很难预测此名称,您也可以通过 POST 到工厂 URI 来创建绑定。请参见下面的示例。

许多 URI 返回列表。此类 URI 可以添加查询字符串参数 sortsort_reversesort 允许您选择一个主字段进行排序,而 sort_reverse 如果设置为 true 则会反转排序顺序。sort 参数可以包含由点分隔的子字段。这允许您按列表项的嵌套组件进行排序;它不允许您按多个字段进行排序。请参见下面的示例。

您还可以使用 columns 参数限制每个项目返回的信息。这是一个由点分隔的子字段的逗号分隔列表。请参见下面的示例。

可以通过 GET 请求禁用统计信息,仅获取每个对象的基本信息。这大大减少了返回的数据量以及每次查询在系统中的内存和资源消耗。对于某些监控和操作目的,这些查询更为合适。

要选择退出附加指标,请将 disable_stats 查询参数设置为 true

已弃用的端点

危险

避免依赖已弃用的端点。它们最终会变成无操作或可能被完全删除。

GET /api/aliveness-test

GET /api/aliveness-testrabbitmqctl node_health_check 的 HTTP API 等效项:一个已长期弃用、具有侵入性和主观性的健康检查命令,自 4.0 版本以来一直无操作。

此端点自 2021 年以来已被弃用,并且从 RabbitMQ 4.1.0 版本开始无操作。

端点参考

提示

下面的示例使用了 rabbitmqadmin v2curl

但是,API 也可以与任何 HTTP 客户端一起使用。Team RabbitMQ 强烈推荐使用一系列 专用的 HTTP API 客户端库

提示

生成 JSON 输出的示例也使用 jq 格式化输出。jq 的使用是完全可选的。

GET /api/overview

描述整个系统的各种随机信息。

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/overview | jq

GET /api/cluster-name

返回标识此 RabbitMQ 集群的名称。

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/cluster-name | jq

PUT /api/cluster-name

更新标识此 RabbitMQ 集群的名称。

GET /api/nodes

列出集群中的所有节点及其指标。

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/nodes | jq

GET /api/nodes/{name}

返回单个集群节点的指标。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/nodes/rabbit@hostname | jq

GET /api/nodes/{name}/memory

返回特定集群节点的内存使用情况细分

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/nodes/rabbit@hostname/memory | jq

GET /api/definitions

导出集群范围的定义:所有交换器、队列、绑定、用户、虚拟主机、权限、主题权限和参数。也就是说,除了消息之外的所有内容。

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/definitions | jq

相关文档指南:定义导出和导入

POST /api/definitions

服务器定义:交换器、队列、绑定、用户、虚拟主机、权限、主题权限和参数。除了消息之外的所有内容。POST 用于上传现有的一组定义。请注意

  • 集群范围的定义使用与虚拟主机特定的定义不同的格式。虚拟主机特定的定义无法通过此端点导入。请改用 POST /api/definitions/{vhost} 端点。

  • 这些定义会进行合并。服务器上已存在但未包含在上传的定义中的任何内容都将保持不变。

  • 不可变对象(交换器、队列和绑定)上的冲突定义将被忽略。现有定义将被保留。

  • 可变对象上的冲突定义将导致服务器中的对象被上传定义中的对象覆盖。

  • 如果发生错误,您将得到一个部分应用的定义集。

此端点支持 multipart/form-data 以及标准的 application/json 内容类型进行上传。在前一种情况下,定义文件应作为名为 "file" 的表单字段上传。

相关文档指南:定义导出和导入

GET /api/definitions/{vhost}

导出单个虚拟主机的定义。

虚拟主机特定的定义不包含任何虚拟主机名称的详细信息,并且可以导入到任何虚拟主机中。也就是说,在导入定义时,虚拟主机的原始名称不必与目标虚拟主机的名称匹配。

相关文档指南:定义导出和导入

示例

# jq is used for pretty-printing the result. It is entirely optional.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/definitions/%2F | jq

POST /api/definitions/{vhost}

导入(上传)单个虚拟主机的定义:该虚拟主机中的交换器、队列、绑定、用户、权限、主题权限和参数。

请注意

  • 集群范围的定义无法通过此端点导入。请改用 POST /api/definitions/ 端点。

  • 虚拟主机特定的定义不包含任何虚拟主机名称的详细信息,并且可以导入到任何虚拟主机中。也就是说,在导入定义时,虚拟主机的原始名称不必与目标虚拟主机的名称匹配。

  • 这些定义会进行合并。服务器上已存在但未包含在上传的定义中的任何内容都将保持不变。

  • 不可变对象(交换器、队列和绑定)上的冲突定义将被忽略。现有定义将被保留。

  • 可变对象上的冲突定义将导致服务器中的对象被上传定义中的对象覆盖。

  • 如果发生错误,您将得到一个部分应用的定义集。

此端点支持 multipart/form-data 以及标准的 application/json 内容类型进行上传。在前一种情况下,定义文件应作为名为 "file" 的表单字段上传。

相关文档指南:定义导出和导入

GET /api/feature-flags

列出所有功能标志及其状态。

相关文档指南:功能标志

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/feature-flags | jq

GET /api/deprecated-features

列出所有已弃用的功能及其状态。

相关文档指南:已弃用的功能

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/feature-flags | jq

GET /api/deprecated-features/used

列出在此集群中使用的已弃用功能。

相关文档指南:已弃用的功能

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/deprecated_features/used | jq

GET /api/connections

所有打开的连接列表。

使用 分页参数 来列出连接,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single connection.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/connections | jq

GET /api/vhosts/{vhost}/connections

特定虚拟主机中所有打开的连接列表。

使用 分页参数 来列出连接,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

GET /api/connections/{name}

返回单个连接的指标。

示例

# the connection name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/connections/127.0.0.1%3A54594%20-%3E%20127.0.0.1%3A5672 | jq

DELETE /api/connections/{name}

关闭连接。可以选择设置 "X-Reason" 标头以提供原因。

示例

# the connection name must be percent-encoded
curl -sL -u guest:guest -X DELETE -H "Accept: application/json" http://127.0.0.1:15672/api/connections/127.0.0.1%3A62965%20-%3E%20127.0.0.1%3A5672

GET /api/connections/username/{username}

使用特定用户名进行身份验证的所有打开的连接列表。

示例

# the connection name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/connections/username/guest

DELETE /api/connections/username/{username}

关闭用户的全部连接。

可以选择设置 "X-Reason" 标头以提供原因。

示例

# the connection name must be percent-encoded
curl -sL -u guest:guest -X DELETE -H "Accept: application/json" http://127.0.0.1:15672/api/connections/127.0.0.1%3A62965%20-%3E%20127.0.0.1%3A5672

GET /api/connections/{name}/channels

给定连接的所有通道列表。

使用 分页参数 来列出通道,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# the connection name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/connections/127.0.0.1%3A52066%20-%3E%20127.0.0.1%3A5672/channels | jq

GET /api/channels

所有打开的通道列表。

使用 分页参数 来列出通道,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single channel.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/channels

GET /api/vhosts/{vhost}/channels

特定虚拟主机中所有打开的通道列表。

使用 分页参数 来列出通道,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

GET /api/channels/{id}

关于单个通道的详细信息。

GET /api/consumers

所有消费者列表。

使用 分页参数 来列出消费者,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single consumers.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/consumers

GET /api/consumers/{vhost}

给定虚拟主机中所有消费者列表。

GET /api/exchanges

所有交换器列表。使用 分页参数 来列出交换器。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single exchange.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/exchanges

GET /api/exchanges/{name}

给定虚拟主机中所有交换器列表。使用 分页参数 来列出交换器。

GET /api/exchanges/{vhost}/{name}

返回单个交换器的指标。

PUT /api/exchanges/{vhost}/{name}

声明一个交换器。

载荷示例

{
"type": "direct",
"auto_delete": false,
"durable": true,
"internal": false,
"arguments": {}
}

DELETE /api/exchanges/{vhost}/{name}

删除一个交换器。将 if-unused 查询参数设置为 true,如果交换器绑定到队列或作为另一个交换器的源,则操作将无操作。

GET /api/exchanges/{vhost}/{name}/bindings/source

给定交换器作为源的所有绑定列表。

GET /api/exchanges/{vhost}/{name}/bindings/destination

给定交换器作为目标的所有绑定列表。

PUT /api/exchanges/{vhost}/{name}/publish

将消息发布到给定的交换器。载荷示例

{
"properties": {},
"routing_key": "my key",
"payload": "my body",
"payload_encoding": "string"
}

所有键都是强制的。

payload_encoding 键应为 "string"(在这种情况下,载荷将被视为 payload 字段的 UTF-8 编码)或 "base64"(在这种情况下,payload 字段被视为 base64 编码)。

如果消息成功发布,响应将如下所示:

{"routed": true}

如果消息已发送到至少一个队列,则 routed 为 true。

危险

请注意,HTTP API 是一个非常低效的发布选项;

请优先使用 AMQP 1.0、AMQP 0-9-1、RabbitMQ Streaming Protocol 或 RabbitMQ 支持的任何其他消息协议。

GET /api/queues

所有虚拟主机中的所有队列列表,返回一组缩减的字段。

使用 分页参数 来列出队列,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

参数 enable_queue_totals=true 可以与 disable_stats=true 参数结合使用,以返回缩减的字段集并显著减少此端点返回的数据量。反过来,这可以显著降低此类请求的 CPU 和带宽占用。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single queue.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/queues

GET /api/queues/detailed

所有队列的列表,包含关于队列的所有可用信息(每个队列超过 50 个字段)。

使用 分页参数 来列出队列,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

GET /api/queues/{vhost}

给定虚拟主机中所有队列的列表,包含关于队列的所有可用信息(每个队列超过 50 个字段)。。

使用 分页参数 来列出队列,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single queue.
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/queues/%2F

GET /api/queues/{vhost}/{name}

返回队列的指标。

PUT /api/queues/{vhost}/{name}

声明一个队列。

示例载荷

{
"auto_delete": false,
"durable": true,
"arguments": {},
"node": "rabbit@node.hostname"
}

DELETE /api/queues/{vhost}/{name}

删除一个队列。

两个查询字符串参数,if-empty=true 和/或 if-unused=true,可用于条件删除。

GET /api/queues/{vhost}/{name}/bindings

给定队列的所有绑定列表。

DELETE /api/queues/{vhost}/{name}/contents

清空队列(删除其中所有处于就绪状态的消息)。

POST /api/queues/{vhost}/{name}/get

从队列中获取消息。(这不是 HTTP GET,因为它会改变队列的状态。)您应该发送一个类似以下的载荷:

{
"count": 5,
"ackmode": "ack_requeue_true",
"encoding": "auto",
"truncate": 50000
}

count 控制一次可以返回(获取)的最大消息数。

ackmode 参数控制如何 确认 消耗的消息。支持的值有:

  • ack_requeue_true
  • :将获取的消息重新入队。
  • reject_requeue_true
  • :将获取的消息重新入队。
  • ack_requeue_false
  • :对消息进行肯定确认并标记为删除。
  • reject_requeue_false
  • :对消息进行否定确认并标记为删除。

encoding 可以是 "auto"(如果载荷是有效的 UTF-8,则载荷将作为 UTF-8 编码的字符串返回)或 "base64"(Base64 编码的载荷)。

如果 truncate 键设置为一个字节值,那么比该值长的消息将被截断。

危险

此端点仅用于开发和故障排除,不适用于生产环境。在生产环境中,请改用消息或流协议客户端库。

GET /api/bindings

所有绑定列表。

使用 分页参数 来列出绑定,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# This request can result in a very large JSON document
# and unnecessarily wasted CPU resources.
#
# Never use it to fetch information about a single queue.
#
# The virtual host name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/queues/%2F

GET /api/bindings/{vhost}

使用 分页参数 来列出绑定,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

示例

# the virtual host name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/bindings/%2F

GET /api/bindings/{vhost}/e/{exchange}/q/{queue}

返回一个交换器和队列之间的所有绑定列表。

一个交换器和一个队列可以绑定多次,因此此列表可能包含同一对的多个绑定。

POST /api/bindings/{vhost}/e/{exchange}/q/{queue}

将一个队列绑定到一个交换器。

请求体应为一个 JSON 对象,可选择包含两个字段:routing_key(字符串)和 arguments(一个可选参数的映射)。

{
"routing_key": "my_routing_key",
"arguments": {"x-optional-arg": "optional-value"}
}

两个载荷键都是可选的。

响应将包含一个 Location 标头,其中包含新声明的绑定的 URI。

GET /api/bindings/{vhost}/e/{exchange}/q/{queue}/{props}

检索交换器和队列之间的单个绑定。

URI 的 {props} 部分是绑定的 "名称",由其路由键和参数的哈希组成。

{props} 是绑定列表响应中名为 properties_key 的字段。

DELETE /api/bindings/{vhost}/e/{exchange}/q/{queue}/{props}

删除交换器和队列之间的单个绑定。

URI 的 {props} 部分是绑定的 "名称",由其路由键和参数的哈希组成。

{props} 是绑定列表响应中名为 properties_key 的字段。

GET /api/bindings/{vhost}/e/{source}/e/{destination}

POST /api/bindings/{vhost}/e/{source}/e/{destination}

创建新的 交换器到交换器的绑定

请求体应为一个 JSON 对象,可选择包含两个字段:routing_key(字符串)和 arguments(一个可选参数的映射)。

{
"routing_key": "my_routing_key",
"arguments": {
"x-arg": "value"
}
}

两个键都是可选的。

响应将包含一个 Location 标头,其中包含新声明的绑定的 URI。

GET /api/bindings/{vhost}/e/{source}/e/{destination}/{props}

返回特定 交换器到交换器的绑定 的详细信息。

DELETE /api/bindings/{vhost}/e/{source}/e/{destination}/{props}

删除 交换器到交换器的绑定

GET /api/vhosts

返回集群中所有虚拟主机的列表。

分页:默认页大小为 100,最大支持页大小为 500。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/vhosts

GET /api/vhosts/{name}

返回特定虚拟主机的指标。

PUT /api/vhosts/{name}

创建虚拟主机或更新现有虚拟主机的元数据。

载荷示例

{
"description": "virtual host description",
"tags": "accounts,production",
"default_queue_type": "quorum",
"protected_from_deletion": false
}

tags 键必须是逗号分隔的标签列表。这些元数据字段是可选的。

要启用或禁用跟踪,请使用 tracing 键。

{"tracing":true}

DELETE /api/vhosts/{name}

删除虚拟主机,前提是它没有被保护删除。

GET /api/vhosts/{name}/permissions

给定虚拟主机的所有权限列表。

GET /api/vhosts/{name}/topic-permissions

给定虚拟主机的所有主题权限列表。

POST /api/vhosts/{name}/deletion/protection

保护虚拟主机免于删除。标记为受保护的虚拟主机在解除保护之前无法删除。

DELETE /api/vhosts/{name}/deletion/protection

从虚拟主机中移除删除保护,以便可以删除它。

POST /api/vhosts/{name}/start/{node}

在节点上启动或重启虚拟主机。

显式执行此操作几乎从不需要。RabbitMQ 节点在集群形成后的最初几分钟内(更具体地说,在每个集群成员启动后)确保所有虚拟主机都在所有集群节点上启动。

GET /api/users

列出集群中的所有用户。这只包括内部数据存储中的用户。例如,如果使用了LDAP 后端,此命令将不包括任何 LDAP 用户。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/users

GET /api/users/without-permissions

列出没有权限(无法访问任何虚拟主机)且可以安全删除的用户。

POST /api/users/bulk-delete

批量删除用户列表。载荷必须包含 users 键,该键是用户名的数组。

{"users" : ["user1", "user2", "user3"]}

GET /api/users/{name}

返回内部数据存储中用户的相关信息。

PUT /api/users/{name}

创建用户。载荷中必须提供密码或密码哈希。

{"password":"secret","tags":"administrator"}
{"password_hash":"2lmoth8l4H0DViLaK9Fxi6l9ds8=", "tags":["administrator"]}

password_hash 必须使用 密码指南 中描述的算法生成。

tags 键接受一个逗号分隔的标签列表。

如果两者均未设置,则用户将无法使用密码登录,但可以使用其他机制(如客户端证书)。

password_hash 设置为空字符串("")将确保用户无法使用密码登录。

可以使用 hashing_algorithm 键覆盖哈希函数。当前识别的算法有 rabbit_password_hashing_sha256rabbit_password_hashing_sha512rabbit_password_hashing_md5

DELETE /api/users/{name}

删除用户。

GET /api/users/{user}/permissions

给定用户的全部权限列表。

GET /api/users/{user}/topic-permissions

给定用户的全部主题权限列表。

GET /api/user-limits

列出所有用户的每用户限制。

GET /api/user-limits/{user}

列出特定用户的每用户限制。

PUT /api/user-limits/{user}/{name}

user 设置或删除每用户限制。name URL 路径元素指的是限制的名称(max-connectionsmax-channels)。

限制是使用正文中的 JSON 文档设置的。

{"value": 100}

使用 curl 的示例请求

curl -4u 'guest:guest' -H 'content-type:application/json' -X PUT localhost:15672/api/user-limits/guest/max-connections -d '{"value": 100}'

DELETE /api/user-limits/{user}/{name}

清除每用户限制。

GET /api/permissions

集群中所有用户权限列表。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/permissions

GET /api/permissions/{vhost}/{user}

返回用户在给定虚拟主机中的权限。

PUT /api/permissions/{vhost}/{user}

授予(创建)或更新用户在给定虚拟主机中的权限。

载荷示例

{"configure":".*","write":".*","read":".*"}

所有三个权限都必须明确提供。

DELETE /api/permissions/{vhost}/{user}

撤销用户在给定虚拟主机中的权限。

GET /api/topic-permissions

列出集群中所有 主题交换器权限

GET /api/topic-permissions/{vhost}/{user}

返回用户在给定虚拟主机中的 主题交换器权限

PUT /api/topic-permissions/{vhost}/{user}

授予或更新用户的 主题交换器权限

{
"exchange": "amq.topic",
"write": "^a",
"read":".*",
"configure":".*"
}

上面示例中的所有键都是强制的。

DELETE /api/topic-permissions/{vhost}/{user}

撤销用户的 主题交换器权限

GET /api/parameters

返回集群中所有虚拟主机的 运行时参数 列表。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/parameters

GET /api/parameters/{component}

GET /api/parameters/{component}/{vhost}

GET /api/parameters/{component}/{vhost}/{name}

PUT /api/parameters/{component}/{vhost}/{name}

创建或更新 运行时参数

示例载荷

{
"vhost": "vh-2",
"name": "policies.1",
"pattern": "^cq",
"apply-to": "queues",
"definition": {
"max-length": 1000000
}
}

DELETE /api/parameters/{component}/{vhost}/{name}

删除 运行时参数

GET /api/global-parameters

列出集群中所有 全局运行时参数

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/global-parameters

GET /api/global-parameters/{name}

返回给定全局运行时参数的值(定义)。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/global-parameters/cluster_name

PUT /api/global-parameters/{name}

设置给定的全局运行时参数。

示例载荷

{
"name": "cluster_name",
"value": "prod-456"
}
{
"name": "cluster_tags",
"value": {
"environment": "production",
"az": "ca-central-1"
}
}

示例

curl -sL -u guest:guest -X PUT -H "Accept: application/json" -H "Content-Type: application/json" http://127.0.0.1:15672/api/global-parameters/cluster_tags \
--data '{"value": {"region": "ca-central-1", "environment": "production"}, "name": "cluster_tags"}'

DELETE /api/global-parameters/{name}

清除全局运行时参数。

示例

curl -sL -u guest:guest -X DELETE -H "Accept: application/json" http://127.0.0.1:15672/api/global-parameters/cluster_tags

GET /api/policies

列出集群中所有虚拟主机的 策略

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/policies

GET /api/policies/{vhost}

列出给定虚拟主机中的 策略

示例

# The virtual host name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/policies/%2F

GET /api/policies/{vhost}/{name}

返回 策略 定义。

PUT /api/policies/{vhost}/{name}

声明或更新 策略

示例载荷

{"pattern":"^amq.", "definition": {"federation-upstream-set":"all"}, "priority": 10, "apply-to": "queues"}

示例中的所有键都是强制的。

重要

一次只有一个策略适用于队列、流或交换器。

当多个策略具有冲突的优先级时,将应用随机一个。因此,这种情况必须避免

DELETE /api/policies/{vhost}/{name}

删除策略。

GET /api/operator-policies

列出集群中所有虚拟主机的 操作员策略

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/operator-policies

GET /api/operator-policies/{vhost}

返回操作员 策略 定义。

示例

# The virtual host name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/operator-policies/%2F

GET /api/operator-policies/{vhost}/{name}

返回操作员 策略 定义。

PUT /api/operator-policies/{vhost}/{name}

示例载荷

{"pattern":"^amq.", "definition": {"federation-upstream-set":"all"}, "priority": 10, "apply-to": "queues"}

示例中的所有键都是强制的。

重要

一次只有一个策略适用于队列、流或交换器。

当多个策略具有冲突的优先级时,将应用随机一个。因此,这种情况必须避免

DELETE /api/operator-policies/{vhost}/{name}

删除操作员策略。

GET /api/vhost-limits

列出集群中配置的所有 虚拟主机限制

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/vhost-limits

GET /api/vhost-limits/{vhost}

列出为目标虚拟主机配置的 虚拟主机限制

示例

# The virtual host name must be percent-encoded
curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/vhost-limits/%2F

PUT /api/vhost-limits/{vhost}/{name}

vhost 设置或删除每虚拟主机限制。name URL 路径元素指的是限制的名称(max-connectionsmax-queues)。

限制是使用正文中的 JSON 文档设置的。

{"value": 100}

示例请求

curl -4u 'guest:guest' -H 'content-type:application/json' -X PUT localhost:15672/api/vhost-limits/my-vhost/max-connections -d '{"value": 50}'

相关文档指南:虚拟主机

DELETE /api/vhost-limits/{vhost}/{name}

清除(移除) 虚拟主机限制

提供集群中所有虚拟主机的联盟链接的状态。

仅当启用了 rabbitmq_federation_management 插件时,此端点才可用。

相关文档指南:联盟

GET /api/federation-links/{vhost}

提供给定虚拟主机中所有联盟链接的状态。

仅当启用了 rabbitmq_federation_management 插件时,此端点才可用。

相关文档指南:联盟

GET /api/auth/attempts/{node}

节点注册的客户端身份验证尝试列表。

GET /api/auth/attempts/{node}/source

按远程地址和用户名分组的客户端身份验证尝试列表。

GET /api/auth/hash_password/{password}

根据当前配置的密码哈希算法对提供的 密码 进行哈希。

示例

curl -sL -u guest:guest -H "Accept: application/json" http://127.0.0.1:15672/api/auth/hash_password/my-secret-password

GET /api/stream/connections

列出集群中所有虚拟主机的 流协议 连接。

使用 分页参数 来列出连接,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}

特定虚拟主机中所有打开的 流协议 连接列表。

使用 分页参数 来列出连接,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}

返回特定 流协议 连接的指标。

需要启用 rabbitmq_stream_management 插件。

DELETE /api/stream/connections/{vhost}/{name}

关闭特定 流协议 连接。

可以选择设置 "X-Reason" 标头以提供原因。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}/publishers

列出 流协议 连接上已知的发布者。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}/consumers

列出 流协议 连接上已知的消费者。

使用 分页参数 来列出消费者,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers

所有 流协议 连接上已知的发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers/{vhost}

给定虚拟主机中所有 流协议 连接上已知的发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers/{vhost}/{stream}

所有 流协议 连接上到给定流的已知发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/consumers

使用 分页参数 来列出消费者,否则此端点可能会产生非常大的 JSON 响应,浪费大量带宽和 CPU 资源。默认页大小为 100,最大支持页大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/consumers/{vhost}

特定虚拟主机中的流消费者列表。

需要启用 rabbitmq_stream_management 插件。

健康检查端点

GET /api/health/checks/alarms

如果没有集群中的告警生效,则响应 200 OK,否则响应 503 Service Unavailable。

相关文档指南:资源告警

GET /api/health/checks/local-alarms

如果没有集群中的告警生效,则响应 200 OK,否则响应 503 Service Unavailable。

相关文档指南:资源告警

GET /api/health/checks/certificate-expiration/{within}/{unit}

检查所有 TLS 启用的监听器使用的 PEM 证书包中找到的每个证书的过期日期,无论证书的“类型”是什么(叶/服务器标识、中间商或任何 CA)。

如果所有证书都有效(未过期),则响应 200 OK,否则响应 503 Service Unavailable。

此健康检查假设:

  • 节点上的 PEM 证书包中包含的所有证书都与 RabbitMQ 客户端、插件或加密的节点间通信相关。
  • 过期的证书不是正常运行状态,任何过期的证书都必须报告为检查失败。

如果其中一些假设不成立,请不要使用此健康检查。

有效单位:days, weeks, months, years。{within} 参数的值是单位的数量。因此,当 {within} 为 2 且 {unit} 为 "months" 时,检查使用的过期期限将是接下来的两个月。

相关文档指南:TLS加密的节点间通信

GET /api/health/checks/port-listener/{port}

如果给定端口上有活动监听器,则响应 200 OK,否则响应 503 Service Unavailable。

相关文档指南:网络

GET /api/health/checks/protocol-listener/{protocols}

如果所有给定协议都有活动监听器,则响应 200 OK,否则响应 503 Service Unavailable。可以通过用逗号分隔名称来提供多个协议。

有效的协议名称包括:amqpmqttstompweb-mqttweb-stomp。要检查加密监听器,请在协议名称后添加 s,例如 amqpsmqtts

GET /api/health/checks/virtual-hosts

如果所有虚拟主机都在目标节点上运行,则响应 200 OK,否则响应 503 Service Unavailable。

GET /api/health/checks/node-is-quorum-critical

检查是否存在仲裁队列(如果目标节点关闭,这些队列将丢失其仲裁和可用性)。如果没有这样的仲裁队列,则响应 200 OK,否则响应 503 Service Unavailable。

相关文档指南:仲裁队列

GET /api/health/checks/is-in-service

如果目标节点已启动、运行并准备好服务客户端,则响应 200 OK,否则响应 503 Service Unavailable。如果目标节点正在为维护而进行停用,则此检查将返回 503 Service Unavailable。

GET /api/health/checks/below-node-connection-limit

如果目标节点到 AMQP 和 AMQPS 端口的连接数少于配置的最大值,则响应 200 OK,否则响应 503 Service Unavailable。

GET /api/health/checks/ready-to-serve-clients

如果目标节点已准备好为客户端服务,则响应 200 OK,否则响应 503 Service Unavailable。此检查组合了:

  • /api/health/checks/is-in-service
  • /api/health/checks/protocol-listener/amqp/api/health/checks/protocol-listener/amqps
  • /api/health/checks/below-node-connection-limit

因此,此检查仅在目标节点处于服务状态、存在 AMQP 或 AMQPS 监听器且目标节点处于活动状态的 AMQP 和 AMQPS 连接数少于其配置限制时才返回 200 OK。

GET /api/rebalance/queues

重新平衡所有虚拟主机中的所有队列。

此操作是异步的。请检查 RabbitMQ 日志 以获取有关操作成功或失败的消息。

curl -4u 'guest:guest' -XPOST localhost:15672/api/rebalance/queues/

GET /api/whoami

返回已进行身份验证的用户的用户名。

GET /api/auth

关于 OAuth 2 配置的详细信息。它将返回 HTTP 状态 200 并带有以下格式的响应体。

{"oauth_enabled":"boolean", "oauth_client_id":"string", "oauth_provider_url":"string"}

GET /api/extensions

注册到管理插件的扩展列表。

HTTP API 返回的指标

您可以向 HTTP API 发出的 GET 请求大部分都会返回具有大量键的 JSON 对象。其中一些键代表您在 PUT 请求或 AMQP 命令中自己设置的内容(例如,队列持久性或参数),而大多数键则代表与特定对象相关的统计信息。本页将尝试记录它们。

应将其与 rabbitmqctl 的手册页结合阅读(如果您安装在 Unix / Linux 上,请参阅您的安装指南,或在 RabbitMQ 网站上查找最新版本)。

形式为

rabbitmqctl list_{object}
rabbitmqctl list_{object}

的命令可能返回的任何字段也将返回在 HTTP API 的等效部分,因此所有这些键在此处都不再记录。然而,HTTP API 返回的指标比标准的 CLI 工具rabbitmqadmin v2 都要多。

_details 对象

许多字段代表某种计数:队列长度、已确认消息、已接收字节数等等。HTTP API 返回的此类绝对计数通常会有一个相应的 _details 对象,该对象提供有关此计数如何变化的有关信息。例如,来自队列的

"messages": 123619,
"messages_details": {
"avg": 41206.333333333336,
"avg_rate": 1030.1583333333333,
"rate": 24723.8,
"samples": [
{
"sample": 123619,
"timestamp": 1400680560000
},
{
"sample": 0,
"timestamp": 1400680500000
},
{
"sample": 0,
"timestamp": 1400680440000
}
]
}

在这里,我们有一个 messages 计数(队列中的总消息数),以及一些附加数据:

avg

请求时间段内的平均值(见下文)。

avg_rate

请求时间段内的平均速率。

rate

在最近的采样间隔内,计数每秒的变化量。

samples

显示值在请求时间段内如何变化的快照。

avgavg_ratesamples 仅在您通过向 URL 追加查询参数来请求特定时间段时才会出现。要做到这一点,您需要为所需的样本设置一个年龄和一个增量。返回范围的结尾将始终对应于当前。

不同类型的数据需要不同的查询参数来返回样本,如以下表格所示。您可以指定多个参数集,因为您请求的资源可以生成多种类型的样本(例如,队列可以返回消息速率和队列长度)。

发送和接收的消息msg_rates_age / msg_rates_incr
发送和接收的字节数data_rates_age / data_rates_incr
队列长度lengths_age / lengths_incr
节点统计信息(例如,文件描述符、可用磁盘空间)node_stats_age / node_stats_incr

例如,追加 ?lengths_age=3600&lengths_incr=60 将返回过去一小时的队列长度数据,每分钟一个样本。

message_stats 对象

许多对象(包括队列、交换器和通道)会返回通过它们的计数。这些包含在 message_stats 对象中(该对象又包含每个计数的 _details 对象,如上所述)。

这些可能包含:

publish

已发布的消息计数。

publish_in

发布到交换器的“入站”消息计数,即不考虑路由。

publish_out

从交换器“出站”的消息计数,即考虑路由。

confirm

已确认的消息计数。

deliver

在确认模式下发送给消费者的消息计数。

deliver_no_ack

在无确认模式下发送给消费者的消息计数。

get

响应 basic.get 在确认模式下发送的消息计数。

get_no_ack

响应 basic.get 在无确认模式下发送的消息计数。

deliver_get

以上四种的 sum。

redeliver

deliver_get 中具有 redelivered 标志的消息计数。

drop_unroutable

因无法路由而被丢弃的消息计数。

return_unroutable

因无法路由而被退回给发布者的消息计数。

只有发生活动的字段才会出现。

详细消息统计对象

此外,队列、交换器和通道可以返回每个相邻对象的(即,通道 -> 交换器 -> 队列 -> 通道的相邻对象)消息统计的细分。这仅在 rates_mode 配置项已从默认的 basic 切换到 detailed 时才会发生。

由于这可能构成大量数据,因此也仅在查询单个通道、队列或交换器而不是列表时才返回。另请注意,默认的样本保留策略意味着这些详细消息统计不保留超过几秒的历史数据。

详细的消息统计对象名称取决于它们的位置(下面有说明)。每组详细统计信息都包含一个对象列表,每个对象有两个字段:一个用于标识伙伴对象,另一个名为 stats,它是一个如上所述的 message_stats 对象。

下面是一个示例片段

"incoming": [
{
"stats": {
"publish": 352593,
"publish_details": {
"rate": 100.2
}
},
"exchange": {
"name": "my-exchange",
"vhost": "/"
}
}
{
"stats": {
"publish": 543784,
"publish_details": {
"rate": 54.6
}
},
"exchange": {
"name": "amq.topic",
"vhost": "/"
}
}
],

此队列当前正在接收来自两个交换器的消息:来自“my-exchange”的 100.2 条消息/秒,来自“amq.topic”的 54.6 条消息/秒。

/api/overview

此 API 包含以下字段

cluster_name

整个集群的名称,通过 rabbitmqctl set_cluster_name 设置。

contexts

集群中 Web 应用程序上下文的列表。

erlang_full_version

一个字符串,包含已连接节点的 Erlang VM 的详细信息以及编译方式。

erlang_version

一个字符串,包含已连接节点的 Erlang 版本。由于集群应运行相同版本,因此此信息可代表整个集群。

exchange_types

所有可用交换器类型的列表。

listeners

集群中所有节点的(非 HTTP)网络监听器。(HTTP 请参见 /api/nodes 中的 contexts)。

management_version

使用的管理插件版本。

message_stats

一个 message_stats 对象,包含用户可以看到的所有内容——对于所有 vhost,无论权限如何(对于 monitoringadministrator 用户),对于其他用户,则是用户有权访问的所有 vhost。

节点

此管理插件实例运行所在的集群节点的名称。

object_totals

一个对象,包含所有连接、通道、交换器、队列和消费者的全局计数,受 message_stats 的可见性规则约束。

queue_totals

一个对象,包含所有队列的 messagesmessages_readymessages_unacknowledged 字段的总和,同样受 message_stats 的可见性规则约束。

rabbitmq_version

处理此请求的节点上的 RabbitMQ 版本。

rates_mode

'none', 'basic' 或 'detailed'。

statistics_db_event_queue

待由数据库处理的统计事件数量。

statistics_db_node

托管管理统计数据库的集群节点的名称。

/api/nodes

此 API 包含以下字段

applications

节点上运行的所有 Erlang 应用程序列表。

auth_mechanisms

节点上安装的所有 SASL 认证机制列表。

cluster_links

集群中其他节点的列表。对于每个节点,都包含用于连接它的 TCP 连接的详细信息以及已传输数据的统计信息。

config_files

节点读取的配置文件列表。

contexts

节点上所有 HTTP 监听器的列表。

db_dir

节点使用的持久化存储的位置。

disk_free

磁盘可用空间(以字节为单位)。

disk_free_alarm

磁盘警报是否已触发。

disk_free_limit

磁盘警报将触发的点。

enabled_plugins

明确启用且正在运行的插件列表。

exchange_types

节点上可用的交换器类型。

log_files

节点使用的日志文件列表。如果节点还将消息发送到 stdout,则列表中还会报告“<stdout>”。

mem_used

内存使用量(以字节为单位)。

mem_alarm

内存警报是否已触发。

mem_limit

内存警报将触发的点。

name

节点名称。

net_ticktime

节点当前的内核 net_ticktime 设置。

os_pid

此节点运行的操作系统进程标识符。

partitions

此节点看到的网络分区列表。

proc_total

Erlang 进程的最大数量。

proc_used

正在使用的 Erlang 进程数量。

rates_mode

'none', 'basic' 或 'detailed'。

run_queue

等待运行的 Erlang 进程的平均数量。

running

此节点是否正在运行的布尔值。如果为 false,则大多数其他统计信息将缺失。

type

'disc' 或 'ram'。

uptime

Erlang VM 启动以来的时间(以毫秒为单位)。

processors

RabbitMQ 使用的逻辑 CPU 核心数量。

/api/nodes/(name)

以上所有内容,外加

memory

详细的内存使用统计信息。仅当 URL 附加 ?memory=true 时出现。

binary

二进制内存所有者的详细分类。仅当 URL 附加 ?binary=true 时出现。请注意,如果系统中存在大量小型二进制文件,此查询可能会非常耗时。

/api/connections

/api/connections/(name)

请参见 rabbitmqctl list_connections 的文档。无额外字段,但 pid 被替换为 node

另请注意,虽然非 AMQP 连接也会出现在此列表中(与 rabbitmqctl list_connections 不同),但它们会省略许多连接级别的统计信息。

/api/connections/(name)/channels

/api/channels

请参见 rabbitmqctl list_channels 的文档,其中 pid 被替换为 node,外加

connection_details

有关所属连接的一些基本详细信息。

message_stats

请参阅上面关于 message_stats 的部分。

/api/channels/(name)

以上所有内容,外加

publishes

发送到交换器的详细消息统计信息(参见上面部分)。

deliveries

从队列传递的详细消息统计信息。

consumer_details

此通道上的消费者列表,包含每个消费者的部分详细信息。

/api/exchanges

/api/exchanges/(vhost)

请参见 rabbitmqctl list_exchanges 的文档,外加

message_stats

请参阅上面关于 message_stats 的部分。

/api/exchanges/(vhost)/(name)

以上所有内容,外加

incoming

从通道发布到此交换器的详细消息统计信息(参见上面部分)。

outgoing

从此交换器发布到队列的详细消息统计信息。

/api/queues

当使用 disable_statsenable_queue_totals 的查询参数组合时,此查询返回以下字段

name

队列的名称。

vhost

虚拟主机的名称。

type

队列的类型。

节点

根据队列类型,这是持有队列或托管领导者的节点。

state

队列的状态。

arguments

队列的参数。

auto_delete

auto_delete 参数的值。

durable

durable 参数的值。

exclusive

exclusive 参数的值。

messages

队列中的消息总数。

messages_ready

队列中准备好传递的消息数量。

messages_unacknowledged

队列中等待确认的消息数量。

/api/queues/(vhost)

请参见 rabbitmqctl list_queues 的文档,其中所有对 pid 的引用都被替换为 node,外加

message_stats

请参阅上面关于 message_stats 的部分。

/api/queues/(vhost)/(name)

以上所有内容,外加

incoming

从交换器发布到此队列的详细消息统计信息(参见上面部分)。

deliveries

从此队列传递到通道的详细消息统计信息。

consumer_details

此通道上的消费者列表,包含每个消费者的部分详细信息。

/api/vhosts/

/api/vhosts/(name)

rabbitmqctl list_vhosts 的所有字段(即 nametracing),外加

message_stats

此 vhost 的全局 message_stats。请注意,即使是没有 monitoring 标签的用户,也会显示此 vhost 中其他用户的活动。

messages messages_ready messages_acknowledged

vhost 中所有队列的这些字段的总和。

recv_oct send_oct

发送到 vhost 的所有连接的这些字段的总和。

分页参数

分页可应用于列出以下内容的端点

  • queues
  • exchanges
  • connections
  • channels

不带分页,这些端点会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。

默认页大小为 100,最大支持页大小为 500。

以下是可以使用的查询参数。

参数名称数据类型描述
page正整数

页码

page_size正整数

每页元素数量(默认值:100,最大支持值:500)

name字符串

按名称过滤,例如队列名称、交换器名称等。

use_regex布尔值

为 param name 启用正则表达式

示例

https://:15672/api/queues?page=1&page_size=50

获取包含 50 个元素的第一个队列页。

https://:15672/api/queues/my-vhost?page=1&page_size=100&name=&use_regex=false&pagination=true

过滤虚拟主机“my-vhost”的第一个队列页。

https://:15672/api/exchanges?page=1&page_size=100&name=%5Eamq&use_regex=true&pagination=true

过滤第一个交换器页,包含 100 个元素,名称使用正则表达式“^amq”进行过滤。

© . This site is unofficial and not affiliated with VMware.