Rabbmit MQ 清空所有Queue及其message

简介: 在测试区,经常因为测试导致测试区很多队列里面堆积很多消息。这一方面对测试区MQ的性能造成问题,dashboard这个插件经常卡主。此外消息过多也不方便debug。

在测试区,经常因为测试导致测试区很多队列里面堆积很多消息。这一方面对测试区MQ的性能造成问题,dashboard这个插件经常卡主。此外消息过多也不方便debug。

一、需求

  • 测试环境服务器资源吃紧,MQ 非常容易爆掉。监控界面都进不去的时候,该如何处理?
  • 消息堆积太多,如何快速清理?

二、dashboard purge message

mq的dashbnoard插件提供了puege单个队列的所有消息。如下图

2020092110005565.png

三、批量清除所有的队列以及消息

[root@P1QMSARC01 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@P1QMSARC01 ...
#检查是否关闭
[root@P1QMSARC01 ~]# lsof -i:5672
[root@P1QMSARC01 ~]# 
#清除所有队列以及消息
[root@P1QMSARC01 ~]# rabbitmqctl reset
Resetting node rabbit@P1QMSARC01 ...

清空后的overview 的Queues为0.

20200921100958651.png

#启动
[root@P1QMSARC01 ~]# rabbitmqctl start_app 
Starting node rabbit@P1QMSARC01 ...
 completed with 3 plugins.

四、MQ的 meta data导入与导出

使用rabbitmqctl reset 之前切记一定要将队列的定义信息导出。待清空完成后再导入。

2019111410585449.png

导出的队列是一个json格式的文件。

"rabbit_version": "3.7.10",
  "users": [{
    "name": "guest",
    "password_hash": "AgvI76xv7Z7x8GgygqtqM75S3TkqfcuwmndHpeFRuPaNZkTN",
    "hashing_algorithm": "rabbit_password_hashing_sha256",
    "tags": "administrator"
  }],
  "vhosts": [{
    "name": "/"
  }],
  "permissions": [{
    "user": "guest",
    "vhost": "/",
    "configure": ".*",
    "write": ".*",
    "read": ".*"
  }],
  "topic_permissions": [],
  "parameters": [],
  "global_parameters": [{
    "name": "cluster_name",
    "value": "rabbit@P1QMSARC01"
  }],
  "policies": [{
    "vhost": "/",
    "name": "ha-all",
    "pattern": "^",
    "apply-to": "all",
    "definition": {
      "ha-mode": "all"
    },
    "priority": 0
  }],
  "queues": [{
    "name": "466XPNRP0300",
    "vhost": "/",
    "durable": true,
    "auto_delete": false,
    "arguments": {}
  }, 

将这个json文件从dashboard导入,之前所有的队列都恢复了,但消息再也回不来了。所以正式区还是慎用,除非消息被备份了。

20200921101604159.png

五、如何清空部分MQ 的message?

测试代码如下:

 @Test
    public void testpurgeRabbitMQ() throws IOException {
//        快捷情况MQ 的消息
        String queueName = "A_GLASS,A_PANEL,A_DEFECT,F_GLASS,F_PANEL,F_DEFECT,C_GLASS,C_PANEL,C_DEFECT";
        List<String> queueStrList = Arrays.asList(queueName.split(","));
//        final List<JSONObject> jsonObjectList = buildJsonString();
        try {
            for(int i= 0; i< queueStrList.size(); i++){
                channel.queuePurge(queueStrList.get(i));
                log.info("QueueName:{},had purged",queueStrList.get(i));
            }
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

2021年6月22日01:01:12

rabbitmqadmin purge queue name=purge-test name=purge-test1

六、如何使用命令行purge 大量堆积的MQ

rabbitmqadmin purge queue name=purge-test

可以跟多个name吗?一次性purge多个

rabbitmqadmin purge queue name=purge-test name=purge-test1

c0ff7f253fb6417b9ca6c6fd75bae6dc.png

一次puege多个好像不可以。2167ddae20d7411b8a967d113ec196d1.png

api purge

这个还没测通,api url中的vhost_name是一个/ 该如何处理?

curl -i -u guest:guest -XDELETE http://10.50.10.179:15672/api/queues//purge-test/contents
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
消息中间件 监控 算法
高效排队,紧急响应:RabbitMQ Priority Queue全面指南【RabbitMQ 九】
高效排队,紧急响应:RabbitMQ Priority Queue全面指南【RabbitMQ 九】
229 0
|
2月前
|
消息中间件 存储 缓存
MetaQ/RocketMQ 原理问题之Consume queue中的条目长度是固定的问题如何解决
MetaQ/RocketMQ 原理问题之Consume queue中的条目长度是固定的问题如何解决
|
4月前
|
JSON 物联网 数据格式
什么是MQTT 遗嘱消息(Will Message)
【2月更文挑战第17天】
411 7
什么是MQTT 遗嘱消息(Will Message)
|
4月前
|
消息中间件 存储 Java
RabbitMQ中的Queue是什么?它的特点是什么?
RabbitMQ中的Queue是什么?它的特点是什么?
55 0
|
4月前
|
消息中间件 负载均衡 算法
RocketMQ源码(三)简单探索Producer和Consumer与Queue之间的负载均衡策略
- Producer如何将消息负载均衡发送给queue? - Consumer如何通过负载均衡并发消费queue的消息?
548 0
|
4月前
|
消息中间件 Shell Docker
百度搜索:蓝易云【docker rabbitmq-清空queue队列数据】
通过以上步骤,您可以使用Docker清空RabbitMQ队列的数据。这将帮助您重置队列并清除旧数据,以进行新的测试或使用。
56 0
|
11月前
|
消息中间件 存储 算法
RabbitMQ之Queue(队列)属性解读
RabbitMQ之Queue(队列)属性解读
|
消息中间件 中间件 C#
C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(二)
C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(二)
|
消息中间件 存储 C#
C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(一)
C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(一)
Rabbmit MQ 错误 connection error
Rabbmit MQ 错误 connection error
80 0