我希望通过编程清除所有队列,或者作为管理功能,或者在开发/测试期间清除,以获得一个干净的系统。
以下是内联示例,我编写了如下代码:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
ActiveMQConnection connection = (ActiveMQConnection)connectionFactory.createConnection();
DestinationSource destinationSource = connection.getDestinationSource();
for (ActiveMQQueue queue : destinationSource.getQueues()) {
connection.destroyDestination(queue);
}
但是,getQueues()始终返回一个空集,即使web控制台中存在可见的队列。查看源代码,似乎队列列表仅通过侦听队列创建建议主题消息来填充,因此在运行此代码时存在的任何队列都不会列出。
the ActiveMQ docs
其中显示“从5.1.0开始,您可以在ActiveMQConnection上使用新的DestinationSource来访问可用队列”
我做错什么了吗?是否有更好的接口来枚举和清除队列?
这也是我们的话题
a bug report I submitted