ActiveMQ - 如何在ActiveMQ实例启动时清除队列

时间:2013-10-16 13:05:42

标签: activemq apache-camel

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

有没有办法在activemq.xml中配置或以其他任何方式处理它?<​​/ p>

请注意我有群集环境,目前正在运行两个ActiveMQ实例(instance1和instance2)。

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

我试图将Apache Camel与ActiveMQ一起使用。所以,如果我们能够用Camel完成这项工作,请告诉我。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以做的是将您的activemq启动脚本自定义为

  1. 启动activemq(显然)
  2. 使用activemq-admin.bat或activemq-admin.sh清除所选队列
  3. 语法如下所示:

    activemq-admin.bat purge name_of_your_broker name_of_the_queue
    

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

答案 2 :(得分:0)

由于我找不到任何直接的答案,我想与ApacheCamel一起处理。设置

ProducerTemplate sendBody 

作为

ascExchangePattern.InOut

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