更新时间:2022-08-15 GMT+08:00

删除队列

本章节指导您通过RabbitMQ WebUI页面或调用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”页签,查看队列是否成功删除。