更新时间:2024-05-06 GMT+08:00

删除Queue

操作场景

本章节主要介绍删除Queue的操作,有以下几种方式,您可以根据实际情况选择任意一种方式:

删除Queue后,该Queue下的所有配置将会被删除,且无法恢复,请谨慎操作。

前提条件

创建Queue

方法一:在控制台删除Queue

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    此处请选择RabbitMQ实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务RabbitMQ版”,进入分布式消息服务RabbitMQ专享版页面。
  4. 单击实例名称,进入实例详情页面。
  5. 在左侧导航栏选择“Vhost列表”,进入Vhost列表页面。
  6. 单击Vhost名称,进入Vhost详情页。
  7. 在“Queue”页签中,通过以下任意一种方法,删除Queue。

    • 勾选Queue名称左侧的方框,可选一个或多个,单击信息栏左上侧的“删除Queue”。
    • 在待删除的Queue所在行,单击“删除”。

  8. 单击“确定”,完成Queue的删除。

方法二:在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”页签,查看队列是否成功删除。