activemq-artemis - 清除 ActiveMQ Artemis 中的所有消息
问题描述
我们设置了几个 ActiveMQ Artemis 2.17.0 集群,以通过镜像在数据中心之间进行复制。
我们之前的故障转移是紧急情况,状态很可能不同步。当我们接下来执行预定的故障转移测试时,几周前的消息被发送给了消费者。我知道镜像是异步的,所以预计同步可能不会一直是 100%。但是,这些消息不在同步延迟的时间范围内。值得注意的是,我们已经发生了一些我预计可能会引发镜像的事件。我们遇到了NFS 脑裂问题以及过去的紧急故障转移
因此,在我们知道镜像存在问题后,我们正在寻找一种方法来清除(或同步)备用服务器上的所有消息,以防止发生类似情况。有超过 5,000 个队列,因此最好不需要逐个队列地运行该操作。
有没有办法在 ActiveMQ Artemis 2.17.0 或更高版本中实现这一点?
解决方案
没有编程方式可以简单地从代理上的每个队列中删除所有数据。但是,您可以组合一些管理操作(例如在脚本中)以获得相同的结果。您可以使用该getQueueNames
方法获取每个队列的名称,然后将这些名称传递给该destroyQueue(String)
方法。
但是,清除所有数据的最简单方法可能是简单地停止代理,清除数据目录,然后重新启动代理。
推荐阅读
- frontend - 如何从前端 Web 客户端安全地收集日志?
- django - 当表单从无效帖子重新加载时,为什么我的提交按钮会重新定位到 Django 表单之外?
- c# - 单元测试从 BasePageModel 继承的 Razor 页面
- cs50 - 为什么删除 printf 函数会弄乱我的代码?CS50 pset1 现金贪婪挑战
- c# - 如何在 asp.net core 2.2 的下拉列表中获取选定的值?
- javascript - 除特殊情况外,如何获取组匹配模式
- tfs - 为 TFS 2017 错误元素“SystemControls”导入更新的 PBI XML 具有无效的子元素“Control”。TF237070
- r - 如何让 ComplexHeatMap 接受对数比例的 NA 数据?
- javascript - React Native:继承样式
- node.js - 收到错误:TypeError:无法读取未定义的属性“then”