清除 ActiveMQ Artemis 中的所有消息
Purge all messages in ActiveMQ Artemis
我们有几个 ActiveMQ Artemis 2.17.0 集群设置,可以在 mirroring 的数据中心之间进行复制。
我们之前的故障转移是紧急情况,很可能状态不同步。当我们下一次执行预定的故障转移测试时,几周前的消息被发送给消费者。我知道镜像是异步的,所以预计同步可能不会一直是 100%。但是,这些消息不在同步延迟的时间范围内。值得注意的是,我们已经发生了几个事件,我预计它们可能会关闭镜像。我们遇到了 NFS split brain 问题以及过去的紧急故障转移
因此,我们正在寻找一种方法,在我们知道镜像存在问题后清除(或同步)备用服务器上的所有消息,以防止类似情况的发生。有超过 5,000 个队列,因此最好不需要逐个队列地进行操作 运行。
有什么方法可以在 ActiveMQ Artemis 2.17.0 或更高版本中实现这一点?
没有编程方式可以简单地从代理上的每个队列中删除所有数据。但是,您可以组合一些管理操作(例如在脚本中)以获得相同的结果。您可以使用 getQueueNames
method to get the name of every queue and then pass those names to the destroyQueue(String)
方法。
但是,清除所有数据的最简单方法可能是简单地停止代理,清除数据目录,然后重新启动代理。
我们有几个 ActiveMQ Artemis 2.17.0 集群设置,可以在 mirroring 的数据中心之间进行复制。
我们之前的故障转移是紧急情况,很可能状态不同步。当我们下一次执行预定的故障转移测试时,几周前的消息被发送给消费者。我知道镜像是异步的,所以预计同步可能不会一直是 100%。但是,这些消息不在同步延迟的时间范围内。值得注意的是,我们已经发生了几个事件,我预计它们可能会关闭镜像。我们遇到了 NFS split brain 问题以及过去的紧急故障转移
因此,我们正在寻找一种方法,在我们知道镜像存在问题后清除(或同步)备用服务器上的所有消息,以防止类似情况的发生。有超过 5,000 个队列,因此最好不需要逐个队列地进行操作 运行。
有什么方法可以在 ActiveMQ Artemis 2.17.0 或更高版本中实现这一点?
没有编程方式可以简单地从代理上的每个队列中删除所有数据。但是,您可以组合一些管理操作(例如在脚本中)以获得相同的结果。您可以使用 getQueueNames
method to get the name of every queue and then pass those names to the destroyQueue(String)
方法。
但是,清除所有数据的最简单方法可能是简单地停止代理,清除数据目录,然后重新启动代理。