ActiveMQ - 以编程方式删除队列
Posted
技术标签:
【中文标题】ActiveMQ - 以编程方式删除队列【英文标题】:ActiveMQ - Removing queues programmatically 【发布时间】:2011-03-03 11:46:01 【问题描述】:Fellow ***ers,有没有办法让我以编程方式删除 ActiveMQ 中的队列或主题?我正在使用 ActiveMQ 的标准持久性,并且我的应用程序要求在启动时动态重新创建所有新队列(除非队列中存储了消息,在这种情况下,队列应该保持存在)。
我还通过会话以编程方式创建所有队列。是否有与该程序等效的程序,仅用于删除队列?查询和迭代现有队列也很有用,但我还没有找到方法。
【问题讨论】:
您是在运行 ActiveMQ 嵌入式还是独立的? 【参考方案1】:虽然没有很多具体的例子,但这里有一些关于它的文档: http://activemq.apache.org/how-do-i-purge-a-queue.html
【讨论】:
谢谢,不,我稍后会看看 BrokerViewMBean 接口,看看我能用它做什么。我会告诉你它是否有效。【参考方案2】:要以编程方式从 ActiveMQ 中删除目标,您需要使用代理 MBean (org.apache.activemq:BrokerName=localhost,Type=Broker
) 上的 removeTopic
和 removeQueue
方法通过 JMX 执行此操作。我已经发布了一些示例代码来演示这一点,包括在 Gist 上使用 removeTopic
方法:
http://gist.github.com/439668
希望对您有所帮助。
布鲁斯
【讨论】:
【参考方案3】:您也可以Delete Destinations 在一段时间内处于非活动状态。自 Active MQ 5.4 起可用
或者,如果您正在运行 ActiveMQ 嵌入式,您可以使用 API 删除目标:Region.removeDestination
【讨论】:
【参考方案4】:如果你使用spring JmsTemplate,你可以这样:
Connection cn = getJmsTemplate().getConnectionFactory().createConnection();
ActiveMQDestination destination = ActiveMQDestination.createDestination(queueName, ActiveMQDestination.QUEUE_TYPE);
if(cn instanceof PooledConnection)
((PooledConnection)cn).getConnection().destroyDestination(destination );
【讨论】:
以上是关于ActiveMQ - 以编程方式删除队列的主要内容,如果未能解决你的问题,请参考以下文章
Python。如何从队列/主题 ActiveMQ 中删除任何消息