Fellow StackOverflowers,有没有办法让我以编程方式删除ActiveMQ中的队列或主题?我正在使用ActiveMQ的标准持久性,并且我的应用程序要求在启动时动态重新创建所有新队列(除非队列中存储消息,在这种情况下队列应该保持存在)。ActiveMQ - 以编程方式删除队列
我还通过会话以编程方式创建所有队列。是否有与该过程等效的内容,仅用于删除队列?查询和遍历现有的队列也是有用的,但我还没有找到一种方法来做到这一点。
Fellow StackOverflowers,有没有办法让我以编程方式删除ActiveMQ中的队列或主题?我正在使用ActiveMQ的标准持久性,并且我的应用程序要求在启动时动态重新创建所有新队列(除非队列中存储消息,在这种情况下队列应该保持存在)。ActiveMQ - 以编程方式删除队列
我还通过会话以编程方式创建所有队列。是否有与该过程等效的内容,仅用于删除队列?查询和遍历现有的队列也是有用的,但我还没有找到一种方法来做到这一点。
虽然不是很多具体例子,这里有一些关于它的资料: http://activemq.apache.org/how-do-i-purge-a-queue.html
谢谢你,稍后我会看看BrokerViewMBean接口,看看我能用它做些什么。我会让你知道它是否有效。 – 2010-06-14 12:22:29
从ActiveMQ的编程方式删除一个目标,你需要使用在该removeTopic
和removeQueue
方法通过JMX这样做经纪人MBean(org.apache.activemq:BrokerName=localhost,Type=Broker
)。我已经发布了一些示例代码来证明这一点,包括使用removeTopic
方法,在对要点是:
希望有所帮助。
布鲁斯
您还可以Delete Destinations不活动的一段时间。因为主动MQ可用5.4
或者,如果你正在运行的嵌入式你可以使用API删除目的地的ActiveMQ:Region.removeDestination
如果您使用的春天JmsTemplate时,你可以这样来做:
Connection cn = getJmsTemplate().getConnectionFactory().createConnection();
ActiveMQDestination destination = ActiveMQDestination.createDestination(queueName, ActiveMQDestination.QUEUE_TYPE);
if(cn instanceof PooledConnection){
((PooledConnection)cn).getConnection().destroyDestination(destination);
}
被你运行ActiveMQ嵌入式还是独立运行? – Andrejs 2014-03-01 10:36:34