2010-06-14 145 views
6

Fellow StackOverflowers,有沒有辦法讓我以編程方式刪除ActiveMQ中的隊列或主題?我正在使用ActiveMQ的標準持久性,並且我的應用程序要求在啓動時動態重新創建所有新隊列(除非隊列中存儲消息,在這種情況下隊列應該保持存在)。ActiveMQ - 以編程方式刪除隊列

我還通過會話以編程方式創建所有隊列。是否有與該過程等效的內容,僅用於刪除隊列?查詢和遍歷現有的隊列也是有用的,但我還沒有找到一種方法來做到這一點。

+0

被你運行ActiveMQ嵌入式還是獨立運行? – Andrejs 2014-03-01 10:36:34

回答

4

從ActiveMQ的編程方式刪除一個目標,你需要使用在該removeTopicremoveQueue方法通過JMX這樣做經紀人MBean(org.apache.activemq:BrokerName=localhost,Type=Broker)。我已經發布了一些示例代碼來證明這一點,包括使用removeTopic方法,在對要點是:

http://gist.github.com/439668

希望有所幫助。

布魯斯

2

如果您使用的春天JmsTemplate時,你可以這樣來做:

Connection cn = getJmsTemplate().getConnectionFactory().createConnection(); 
ActiveMQDestination destination = ActiveMQDestination.createDestination(queueName, ActiveMQDestination.QUEUE_TYPE);    

if(cn instanceof PooledConnection){ 
    ((PooledConnection)cn).getConnection().destroyDestination(destination); 
}