更新时间:2022-08-15 GMT+08:00
删除队列
本章节指导您通过RabbitMQ WebUI页面或调用API方式删除队列。
- 方法一:在WebUI页面删除单个队列:在WebUI页面的“Queues”页签中,删除单个队列。
- 方法二:通过Policy批量删除队列:新增与待删除队列的前缀名称相同、且队列过期时间(TTL)为1毫秒的策略,通过此策略实现批量删除队列。
- 方法三:调用API删除单个队列:在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。
- 方法四:调用API批量删除队列:在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。
删除队列前,请确保队列中的消息已经全部被消费,否则未消费的消息将和队列一起被删除。
方法一:在WebUI页面删除单个队列
- 登录RabbitMQ WebUI页面。
- 在“Queues”页签,单击需要删除的队列名称,进入队列详情页面。
图1 队列列表
- 单击“Delete Queue”,删除单个队列。
图2 删除单个队列
方法二:通过Policy批量删除队列
新增与待删除队列的前缀名称相同、且队列TTL为1毫秒的策略,通过此策略实现批量删除队列。
- 登录RabbitMQ WebUI页面。
- 在“Admin > Policies”页面中,新增一条策略。
图3 通过Policy批量删除队列
- Name:填写策略名称。
- Pattern:队列匹配模式,填写队列名称,会匹配前缀同名的队列。例如:设置为“.*”时,表示匹配所有队列。设置为“.*queue-name”时,表示匹配队列名前缀为queue-name的所有队列。
- Apply to:选择“Queues”。
- Priority:可选参数,策略优先级,数字越大,优先级越高。
- Definition:定义TTL,单位为毫秒。填写“expires”参数,值设置为“1”,表示队列过期时间为1毫秒。
- 单击“Add policy”。
在“Queues”页签,查看队列是否成功删除。
- 队列成功删除后,在“Admin > Policies”页面中,在2中新增的策略后,单击“Clear”,删除策略。
如果保留此策略,它对后续新建的队列依然生效,可能会出现误删除队列的情况。图4 删除策略
方法三:调用API删除单个队列
在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。
- 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL方式的RabbitMQ实例。
- 执行以下命令删除单个队列。
curl -i -XDELETE http://${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/queues/${VHOST_NAME}/${QUEUE_NAME}
参数说明如下:- USERNAME:创建实例时设置的用户名。
- PASSWORD:创建实例时设置的密码,如果忘记密码,参考重置实例密码,重新设置密码。
- HOST:在实例详情页,查看Web界面UI地址。
- PORT:在实例详情页,查看Web界面UI端口号。
- VHOST_NAME:vhost名称,默认为“/”,在命令中设置为“%2F”。
- QUEUE_NAME:待删除队列的名称。
示例如下:
curl-i -XDELETE http://test:Zsxxxdx@192.168.0.241:15672/api/queues/%2F/hello
删除成功后,回显如下:
图5 删除队列成功
您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。
方法四:调用API批量删除队列
在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。
- 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL方式的RabbitMQ实例。
- 创建“delete_queues.sh”脚本文件。
touch delete_queues.sh
- 执行以下命令,编辑脚本。
vim delete_queues.sh
将以下内容复制到脚本中,其中USERNAME、PASSWORD、HOST和QUEUES_LIST的值,请根据实际情况修改。
#!/usr/bin/env bash USERNAME=root PASSWORD=Zsxxxdx HOST=192.168.0.241 PORT=15672 VHOST='%2F' QUEUES_LIST="test1 test2 test3"; for QUEUE_NAME in $QUEUES_LIST : do curl -i -XDELETE http://$USERNAME:$PASSWORD@$HOST:$PORT/api/queues/$VHOST/$QUEUE_NAME done
参数说明如下:- USERNAME:创建实例时设置的用户名。
- PASSWORD:创建实例时设置的密码,如果忘记密码,参考重置实例密码,重新设置密码。
- HOST:在实例详情页,查看Web界面UI地址。
- PORT:在实例详情页,查看Web界面UI端口号。
- VHOST:vhost名称,默认为“/”,在命令中设置为“%2F”。
- QUEUES_LIST:待删除队列的名称,队列名称之间使用空格隔开。
- 保存脚本内容。
- 对脚本进行授权。
chmod 777 delete_queues.sh
- 执行脚本。
sh delete_queues.sh
删除成功后,回显如下:
图6 批量删除队列成功
您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。
父主题: 实例日常操作