2010-06-14 119 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); 
}