2013-10-16 137 views
0

當我啓動或重新啓動activeMQ實例時,如何清除/清除選定隊列(例如FOO.BAR)。ActiveMQ - 如何在ActiveMQ實例啓動時清除隊列

有沒有一種方法可以在activemq.xml中配置或以其他方式來處理?

請注意,具有羣集環境的當前正在運行兩個ActiveMQ實例(instance1和instance2)。

注意:我不想使用deleteAllMessagesOnStartup="true",因爲它會刪除所有可用隊列。

我試圖使用Apache的駱駝與ActiveMQ。所以請讓我知道我們是否也可以用駱駝完成這件事。

回答

0

因爲我找不到任何海峽前鋒的答案,所以我想用ApacheCamel來處理。設置

ProducerTemplate sendBody 

ascExchangePattern.InOut 

因此,如果客戶端斷開或者如果ActiveMQ的isntance重啓那麼這些等待隊列消息將GOED到死信隊列,我可以在以後處理這些消息。

2

您需要使用JMX清除方法清除隊列,或使用deleteAllMessagesOnStartup。沒有用於清除單個隊列或一組隊列的配置,這是一個管理操作。如果你需要消息在一段時間後消失,那麼考慮在消息上使用一段時間。

+0

嗨添,如我所說,我不能使用deleteAllMessagesOnStartup,因爲我不想清除所有的隊列。即使我使用JMX清除,當ActiveMQ實例重新啓動時,我也無法清除隊列。而且,即使我使用時間來留言,這也無濟於事,因爲我不想根據時間過期。 – kds

+0

那麼,我想你是搞砸了 –

0

你可以做的是定製你的ActiveMQ啓動腳本

  1. 開始的ActiveMQ(顯然)
  2. 使用ActiveMQ的-admin.bat或activemq-admin.sh清除選定的隊列

語法如下:

activemq-admin.bat purge name_of_your_broker name_of_the_queue 

這裏的技巧是隻啓動當activemq被完全初始化時的第二個腳本。

+0

我同意你的想法,除了我已經試過了。但是這裏的問題是我使用的是Apache Camel路由,並且當ActiveMQ實例被注意時,有些消息在被activemq-admin清除之前會被處理。 – kds