Skip to content

RabbitMQ HTTP API 参考

概述

本文档提供 RabbitMQ HTTP API 的完整参考,包括 API 端点、请求格式和响应示例。

API 基础

基本信息

属性
基础 URLhttp://localhost:15672/api
认证方式Basic Auth
默认用户guest / guest
数据格式JSON

认证方式

bash
# Basic Auth
curl -u guest:guest http://localhost:15672/api/overview

# 使用 Token(需配置 OAuth2)
curl -H "Authorization: Bearer <token>" http://localhost:15672/api/overview

概览 API

GET /api/overview

获取系统概览信息。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/overview

响应示例:

json
{
  "rabbitmq_version": "3.12.0",
  "erlang_version": "25.3",
  "cluster_name": "rabbit@localhost",
  "management_version": "3.12.0",
  "rates_mode": "basic",
  "message_stats": {
    "publish": 1000,
    "deliver": 950,
    "ack": 900
  },
  "queue_totals": {
    "messages": 50,
    "messages_ready": 30,
    "messages_unacknowledged": 20
  },
  "object_totals": {
    "consumers": 10,
    "queues": 5,
    "exchanges": 8,
    "connections": 3
  }
}

节点 API

GET /api/nodes

获取所有节点信息。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/nodes

GET /api/nodes/

获取指定节点信息。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/nodes/rabbit@localhost

响应示例:

json
{
  "name": "rabbit@localhost",
  "type": "disc",
  "running": true,
  "mem_used": 67108864,
  "mem_limit": 4294967296,
  "mem_alarm": false,
  "disk_free": 107374182400,
  "disk_free_limit": 50000000,
  "disk_free_alarm": false,
  "fd_used": 50,
  "fd_total": 1024,
  "sockets_used": 10,
  "sockets_total": 829,
  "proc_used": 200,
  "proc_total": 1048576
}

连接 API

GET /api/connections

获取所有连接。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/connections

GET /api/connections/

获取指定连接详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/connections/127.0.0.1:5672 -> 127.0.0.1:12345

DELETE /api/connections/

关闭指定连接。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/connections/{name}

响应示例:

json
{
  "name": "127.0.0.1:5672 -> 127.0.0.1:12345",
  "host": "127.0.0.1",
  "port": 5672,
  "peer_host": "127.0.0.1",
  "peer_port": 12345,
  "user": "guest",
  "vhost": "/",
  "protocol": "AMQP 0-9-1",
  "channels": 2,
  "client_properties": {
    "product": "RabbitMQ",
    "version": "3.12.0"
  }
}

通道 API

GET /api/channels

获取所有通道。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/channels

GET /api/channels/

获取指定通道详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/channels/{name}

队列 API

GET /api/queues

获取所有队列。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/queues

GET /api/queues/

获取指定虚拟主机的队列。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/queues/%2f

GET /api/queues/{vhost}/

获取指定队列详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/queues/%2f/my_queue

响应示例:

json
{
  "name": "my_queue",
  "vhost": "/",
  "durable": true,
  "auto_delete": false,
  "exclusive": false,
  "messages": 100,
  "messages_ready": 80,
  "messages_unacknowledged": 20,
  "consumers": 2,
  "memory": 10240,
  "message_bytes": 5120,
  "type": "classic"
}

PUT /api/queues/{vhost}/

创建队列。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{"auto_delete":false,"durable":true,"arguments":{}}' \
  http://localhost:15672/api/queues/%2f/my_queue

DELETE /api/queues/{vhost}/

删除队列。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/queues/%2f/my_queue

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

清空队列消息。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/queues/%2f/my_queue/contents

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

获取队列中的消息。

请求示例:

bash
curl -u guest:guest -X POST \
  -H "Content-Type: application/json" \
  -d '{"count":5,"ackmode":"ack_requeue_false","encoding":"auto"}' \
  http://localhost:15672/api/queues/%2f/my_queue/get

响应示例:

json
[
  {
    "payload_bytes": 12,
    "redelivered": false,
    "exchange": "",
    "routing_key": "my_queue",
    "message_count": 99,
    "properties": {
      "content_type": "text/plain",
      "delivery_mode": 2
    },
    "payload": "Hello World",
    "payload_encoding": "string"
  }
]

交换机 API

GET /api/exchanges

获取所有交换机。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/exchanges

GET /api/exchanges/

获取指定虚拟主机的交换机。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/exchanges/%2f

GET /api/exchanges/{vhost}/

获取指定交换机详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/exchanges/%2f/my_exchange

PUT /api/exchanges/{vhost}/

创建交换机。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{"type":"direct","durable":true,"auto_delete":false,"arguments":{}}' \
  http://localhost:15672/api/exchanges/%2f/my_exchange

DELETE /api/exchanges/{vhost}/

删除交换机。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/exchanges/%2f/my_exchange

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

发布消息。

请求示例:

bash
curl -u guest:guest -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "properties": {},
    "routing_key": "my_queue",
    "payload": "Hello World",
    "payload_encoding": "string"
  }' \
  http://localhost:15672/api/exchanges/%2f/amq.default/publish

响应示例:

json
{
  "routed": true
}

绑定 API

GET /api/bindings

获取所有绑定。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/bindings

GET /api/bindings/

获取指定虚拟主机的绑定。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/bindings/%2f

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

创建交换机到队列的绑定。

请求示例:

bash
curl -u guest:guest -X POST \
  -H "Content-Type: application/json" \
  -d '{"routing_key":"my_key","arguments":{}}' \
  http://localhost:15672/api/bindings/%2f/e/my_exchange/q/my_queue

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

删除绑定。

请求示例:

bash
curl -u guest:guest -X DELETE \
  http://localhost:15672/api/bindings/%2f/e/my_exchange/q/my_queue/props

用户 API

GET /api/users

获取所有用户。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/users

GET /api/users/

获取指定用户详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/users/admin

PUT /api/users/

创建或更新用户。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{"password":"secret","tags":"administrator"}' \
  http://localhost:15672/api/users/admin

DELETE /api/users/

删除用户。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/users/admin

权限 API

GET /api/permissions

获取所有权限。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/permissions

GET /api/permissions/{vhost}/

获取指定权限详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/permissions/%2f/admin

PUT /api/permissions/{vhost}/

设置权限。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{"configure":".*","write":".*","read":".*"}' \
  http://localhost:15672/api/permissions/%2f/admin

DELETE /api/permissions/{vhost}/

删除权限。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/permissions/%2f/admin

虚拟主机 API

GET /api/vhosts

获取所有虚拟主机。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/vhosts

GET /api/vhosts/

获取指定虚拟主机详情。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/vhosts/%2f

PUT /api/vhosts/

创建虚拟主机。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{"description":"Production vhost","tags":"production"}' \
  http://localhost:15672/api/vhosts/production

DELETE /api/vhosts/

删除虚拟主机。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/vhosts/production

策略 API

GET /api/policies

获取所有策略。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/policies

PUT /api/policies/{vhost}/

创建或更新策略。

请求示例:

bash
curl -u guest:guest -X PUT \
  -H "Content-Type: application/json" \
  -d '{
    "pattern":"^ha\\.",
    "definition":{"ha-mode":"all","ha-sync-mode":"automatic"},
    "priority":0,
    "apply-to":"all"
  }' \
  http://localhost:15672/api/policies/%2f/ha-all

DELETE /api/policies/{vhost}/

删除策略。

请求示例:

bash
curl -u guest:guest -X DELETE http://localhost:15672/api/policies/%2f/ha-all

参数 API

GET /api/parameters

获取所有参数。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/parameters

健康检查 API

GET /api/aliveness-test/

虚拟主机存活检查。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/aliveness-test/%2f

响应示例:

json
{
  "status": "ok"
}

GET /api/health/checks/alarms

检查告警状态。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/health/checks/alarms

GET /api/health/checks/local-alarms

检查本地告警状态。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/health/checks/local-alarms

GET /api/health/checks/certificate-expiration

检查证书过期。

请求示例:

bash
curl -u guest:guest http://localhost:15672/api/health/checks/certificate-expiration

HTTP 状态码

状态码说明
200成功
201创建成功
204成功(无返回内容)
400请求参数错误
401认证失败
403权限不足
404资源不存在
409资源冲突
500服务器内部错误

使用示例

Python 示例

python
import requests
from requests.auth import HTTPBasicAuth

base_url = "http://localhost:15672/api"
auth = HTTPBasicAuth("guest", "guest")

# 获取概览
response = requests.get(f"{base_url}/overview", auth=auth)
print(response.json())

# 创建队列
requests.put(
    f"{base_url}/queues/%2f/my_queue",
    auth=auth,
    json={"durable": True, "auto_delete": False}
)

# 发布消息
requests.post(
    f"{base_url}/exchanges/%2f/amq.default/publish",
    auth=auth,
    json={
        "routing_key": "my_queue",
        "payload": "Hello World",
        "payload_encoding": "string"
    }
)

JavaScript 示例

javascript
const axios = require('axios');

const api = axios.create({
  baseURL: 'http://localhost:15672/api',
  auth: {
    username: 'guest',
    password: 'guest'
  }
});

// 获取概览
async function getOverview() {
  const response = await api.get('/overview');
  return response.data;
}

// 创建队列
async function createQueue(name) {
  await api.put(`/queues/%2f/${name}`, {
    durable: true,
    auto_delete: false
  });
}

// 发布消息
async function publishMessage(queue, message) {
  await api.post('/exchanges/%2f/amq.default/publish', {
    routing_key: queue,
    payload: message,
    payload_encoding: 'string'
  });
}

注意事项

  1. URL 编码: 虚拟主机名需要 URL 编码,如 / 编码为 %2f
  2. 认证安全: 生产环境不要使用默认用户
  3. HTTPS: 生产环境建议启用 HTTPS
  4. API 限流: 注意管理 API 的请求频率限制

相关链接