本章节指导您通过RabbitMQ WebUI页面或调用API方式删除队列。
- 方法一:在WebUI页面删除单个队列:在WebUI页面的“Queues”页签中,删除单个队列。
- 方法二:通过Policy批量删除队列:新增与待删除队列的前缀名称相同、且队列过期时间(TTL)为1毫秒的策略,通过此策略实现批量删除队列。
- 方法三:调用API删除单个队列:在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。
- 方法四:调用API批量删除队列:在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。
说明删除队列前,请确保队列中的消息已经全部被消费,否则未消费的消息将和队列一起被删除。
方法一:在WebUI页面删除单个队列
步骤 1 登录RabbitMQ WebUI页面。
步骤 2 在“Queues”页签,单击需要删除的队列名称,进入队列详情页面。
图1 队列列表
步骤 3 单击“Delete Queue”,删除单个队列。
图2 删除单个队列
方法二:通过Policy批量删除队列
新增与待删除队列的前缀名称相同、且队列TTL为1毫秒的策略,通过此策略实现批量删除队列。
步骤 1 登录RabbitMQ WebUI页面。
步骤 2 在“Admin -> Policies”页面中,新增一条策略。
图3 通过Policy批量删除队列
- Name:填写策略名称。
- Pattern:队列匹配模式,填写队列名称,会匹配前缀同名的队列。例如:设置为“.*”时,表示匹配所有队列。设置为“.*queue-name”时,表示匹配队列名前缀为queue-name的所有队列。
- Apply to:选择“Queues”。
- Priority:可选参数,策略优先级,数字越大,优先级越高。
- Definition:定义TTL,单位为毫秒。填写“expires”参数,值设置为“1”,表示队列过期时间为1毫秒。
步骤 3 单击“Add policy”。
在“Queues”页签,查看队列是否成功删除。
步骤 4 队列成功删除后,在“Admin > Policies”页面中,在步骤2中新增的策略后,单击“Clear”,删除策略。
如果保留此策略,它对后续新建的队列依然生效,可能会出现误删除队列的情况。
图4 删除策略
方法三:调用API删除单个队列
在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。
步骤 1 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL方式的RabbitMQ实例。
步骤 2 执行以下命令删除单个队列。
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执行删除命令,实现批量删除队列。
步骤 1 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL方式的RabbitMQ实例。
步骤 2 创建“delete_queues.sh”脚本文件。
touch delete_queues.sh
步骤 3 执行以下命令,编辑脚本。
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:待删除队列的名称,队列名称之间使用空格隔开。
步骤 4 保存脚本内容。
步骤 5 对脚本进行授权。
chmod 777 delete_queues.sh
步骤 6 执行脚本。
sh delete_queues.sh
删除成功后,回显如下:
图6 批量删除队列成功
您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。