StackOverflowers,有没有办法以编程方式删除ActiveMQ中的队列或主题?我正在使用ActiveMQ的标准持久性,我的应用程序要求在启动时动态重新创建所有新队列(除非队列中存储了消息,在这种情况下,队列应保持存在)。
我也通过会话以编程方式创建所有队列。是否有相同的程序,只删除队列?查询和迭代现有队列也很有用,但我还没有办法做到这一点。
答案 0 :(得分:6)
您还可以Delete Destinations在一段时间内处于非活动状态。自Active MQ 5.4起可用
或者,如果您运行的是ActiveMQ,则可以使用API删除目的地:Region.removeDestination
答案 1 :(得分:4)
要以编程方式从ActiveMQ中删除目标,您需要使用代理MBean(removeTopic
)上的removeQueue
和org.apache.activemq:BrokerName=localhost,Type=Broker
方法通过JMX执行此操作。我已经发布了一些示例代码来演示这一点,包括在Gist上使用removeTopic
方法:
希望有所帮助。
布鲁斯
答案 2 :(得分:2)
如果你使用spring JmsTemplate,你可以这样做:
Connection cn = getJmsTemplate().getConnectionFactory().createConnection();
ActiveMQDestination destination = ActiveMQDestination.createDestination(queueName, ActiveMQDestination.QUEUE_TYPE);
if(cn instanceof PooledConnection){
((PooledConnection)cn).getConnection().destroyDestination(destination );
}
答案 3 :(得分:0)
虽然没有很多具体的例子,但这里有一些关于它的文档: http://activemq.apache.org/how-do-i-purge-a-queue.html