0

当我启动或重新启动 activeMQ 实例时,如何清除/清除选定的队列(例如 FOO.BAR)。

有没有办法可以在 activemq.xml 中配置或任何其他方式来处理这个?

请注意,我的集群环境当前正在运行两个 ActiveMQ 实例(实例 1 和实例 2)。

注意:我不想使用deleteAllMessagesOnStartup="true",因为它会删除所有可用队列。

我正在尝试将 Apache Camel 与 ActiveMQ 一起使用。所以请让我知道我们是否也可以使用 Camel 来完成这项工作。

4

3 回答 3

2

您需要使用 JMX 清除方法来清除队列,或使用 deleteAllMessagesOnStartup。没有用于清除单个队列或一组队列的配置,这是一个管理操作。如果您需要消息在一段时间后消失,请考虑使用一段时间来生活在消息上。

于 2013-10-16T13:45:44.297 回答
0

你可以做的是自定义你的activemq启动脚本

  1. 启动activemq(显然)
  2. 使用 activemq-admin.bat 或 activemq-admin.sh 清除选定的队列

语法如下所示:

activemq-admin.bat purge name_of_your_broker name_of_the_queue

这里的技巧是在 activemq 完全初始化时只启动第二个脚本。

于 2013-10-17T06:32:19.913 回答
0

由于我找不到任何直截了当的答案,我想用 ApacheCamel 来处理。设置

ProducerTemplate sendBody 

作为

ascExchangePattern.InOut

因此,如果客户端断开连接或 ActiveMQ 实例重新启动,那么那些待处理的队列消息将进入死信队列,我可以稍后处理这些消息。

于 2013-10-17T10:44:07.433 回答