RabbitMQ 通过HTTP API删除队列命令

发布于:2025-07-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

1. 第一条命令:删除指定队列

curl -X DELETE -u admin:rmq@1234 
"http://10.11.64.12:15672/api/queues/%2F/ai-tpp-pm-749a510b-aa20-47a1-bac5-7f44f7edb1ab"
作用

删除虚拟主机 /(编码为 %2F)下名为 ai-tpp-pm-749a510b-aa20-47a1-bac5-7f44f7edb1ab 的队列。

参数解析
参数 说明
-X DELETE 使用 HTTP DELETE 方法
-u admin:rmq@1234 基本认证(用户名:密码)
%2F URL 编码的默认虚拟主机 /
队列名 完整队列名称,需精确匹配
适用场景
  • 明确知道队列名称,需立即删除单个队列。

2. 第二条命令:创建自动删除策略

curl -X PUT -u admin:rmq@1234^
  -H "Content-Type: application/json" ^
  -d "{\"pattern\":\"^ai-tpp-pm.*\", \"definition\":{\"expires\":10000}, \"apply-to\":\"queues\"}" ^
  "http://10.11.64.12:15672/api/policies/%2F/auto-delete-queues"
作用

创建一个名为 auto-delete-queues 的策略,规则如下:

  • 匹配队列:名称以 ai-tp-pm 开头的所有队列(正则表达式 ^ai-tpp-pm.*)。
  • 行为:队列空闲 10 秒(expires:10000 毫秒)后自动删除。
  • 生效范围:仅作用于队列(apply-to:queues)。
参数解析
参数 说明
-X PUT 使用 HTTP PUT 方法
-H "Content-Type: application/json" 声明请求体为 JSON 格式
-d "{\"pattern\":...}" JSON 请求体(需转义双引号)
"http://.../policies/%2F/auto-delete-queues" 策略保存路径(%2F 是虚拟主机 /
JSON 关键字段
字段 说明
pattern ^ai-tpp-pm.* 正则匹配队列名前缀
definition.expires 10000 队列空闲 10 秒后删除
apply-to queues 策略仅应用于队列
适用场景
  • 需批量清理符合特定命名规则的临时队列。
  • 避免队列残留(如测试环境或动态生成的队列)。

3. 主要区别

删除单条队列 创建自动删除策略
HTTP 方法 DELETE PUT
目标 直接操作队列 定义策略规则
影响范围 单个队列 所有匹配队列
执行时机 立即生效 满足条件时触发(如空闲超时)

4. 常见问题

Q1:为什么策略中的 . 需要转义为 \.
  • RabbitMQ 策略使用 正则表达式 匹配队列名,. 在正则中表示“任意字符”,需转义为 \. 才能匹配实际的点号。
Q2:expires:10000 的单位是什么?
  • 单位是 毫秒(10 秒 = 10000 毫秒)。
Q3:如何验证策略是否生效?
curl -u admin:rmq@1234 "http://10.11.64.12:15672/api/policies/%2F"

或登录 RabbitMQ 管理界面查看 Policies 标签页。


5. 注意事项

  1. 权限要求:用户需具备 administrator 标签或至少 policymaker 权限。
  2. 生产环境慎用:自动删除策略可能导致重要队列被误删,建议先在测试环境验证。
  3. 队列锁定:如果队列正在使用(有消费者连接),可能不会立即删除。

根据需求选择直接删除或自动化策略!


网站公告

今日签到

点亮在社区的每一天
去签到