博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rabbmit MQ 清空所有Queue及其message
阅读量:3522 次
发布时间:2019-05-20

本文共 4168 字,大约阅读时间需要 13 分钟。

目录


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

一、需求

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

二、dashboard purge message

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

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

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

清空后的overview 的Queues为0.

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

 四、MQ的 meta data导入与导出

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

导出的队列是一个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导入,之前所有的队列都恢复了,但消息再也回不来了。所以正式区还是慎用,除非消息被备份了。

五、如何清空部分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
queueStrList = Arrays.asList(queueName.split(","));// final List
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

public void testpurgeRabbitMQ() throws IOException {        String queueName = "A1311ILDM05,A1311ILDM05,A1311ILDM05,A1311ILDM12,A1311ILDM12,A1311ILDM12,A1350AOIL05,A1350AOIL05,A1350AOIL05,A1350AOIL06,A1350AOIL06,A1350AOIL06,A135JSADJ01,A135JSADJ01,A135JSADJ01,A135JSADJ05,A135JSADJ05,A135JSADJ05,A135JSADJ08,A135JSADJ08,A135JSADJ09,A135JSADJ09,A135JSADJ09,A1850AOIL13,A1850AOIL13,A1850AOIL13,A1853IMRV02,A185JSADJ15,A185JSADJ15,A185JSADJ15,A2311ILDM03,A2311ILDM03,A2311ILDM03,A2311ILDM10,A2311ILDM10,A2311ILDM10,A2353IMRV02,A2353IMRV02,A2353IMRV02,A3311ILDM08,A3311ILDM08,A3311ILDM08,A3311ILDM09,A3311ILDM09,A3311ILDM09,A3350AOIL02,A3350AOIL02,A3350AOIL02,A3350AOIL09,A3350AOIL09,A3350AOIL09,A3353IMRV02,A3353IMRV02,A3353IMRV02,A335JSADJ04,A335JSADJ04,A335JSADJ04,A335JSADJ13,A385JSADJ19,A385JSADJ19,A385JSADJ19,A4311ILDM06,A4311ILDM06,A4311ILDM06,A4311ILDM07,A4311ILDM07,A4311ILDM07,A4350AOIL10,A4350AOIL10,A4350AOIL10,A4353IMRV02,A4353IMRV02,A4353IMRV02,A5350AOIL03,A5350AOIL03,A5350AOIL03,A5353IMRV02,A5353IMRV02,A5353IMRV02,A535JSADJ04,A535JSADJ04,A535JSADJ04,A77107710,A77107710,A77107710";        List
queueStrList = Arrays.asList(queueName.split(",")); try (Connection connection = connectionFactory.newConnection()) { final Channel channel = connection.createChannel();// final List
jsonObjectList = buildJsonString(); try { for(int i= 0; i< queueStrList.size(); i++){ channel.queuePurge(queueStrList.get(i)); System.out.println("QueueName:{},had purged" + queueStrList.get(i));// logger.info("QueueName:{},had purged",queueStrList.get(i)); } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } catch (TimeoutException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

 

转载地址:http://sjhqj.baihongyu.com/

你可能感兴趣的文章
SELinux详解之第一章——基本介绍
查看>>
SELinux详解之第二章——MLS/MCS
查看>>
linux开机引导和启动过程(详细)(含配置文件解读)
查看>>
Vue学习笔记——常见简写&修饰符
查看>>
vue-element-admin源码解读——项目启动过程
查看>>
vue-element-admin源码解读——数据Mock
查看>>
vue-element-admin源码解读——项目组件布局及状态管理
查看>>
Andriod开发R文件爆红相关解决方法及排查方案
查看>>
汇编语言之寄存器总结
查看>>
【十大经典数据挖掘算法详解】
查看>>
分布式服务器技术选型
查看>>
2019杭电暑期多校第十场 E:Welcome Party(思维)
查看>>
2018宁夏邀请赛 B. Goldbach(Miller-Rabin素数检测算法裸题)
查看>>
组合数取模(板子)
查看>>
2019牛客暑期多校训练营(第十场)D:Han Xin and His Troops(中国剩余定理 or 构造)
查看>>
倍增算法实现后缀数组详解+实现代码
查看>>
Python学习笔记
查看>>
牛客练习赛51 C:勾股定理(勾股数)
查看>>
2019徐州网络预选赛 G. Colorful String(回文自动机)
查看>>
牛客练习赛52 B:Galahad(树状数组维护区间不同元素和(个数))
查看>>