【发布时间】:2021-11-01 23:20:41
【问题描述】:
我希望以编程方式清除所有队列,无论是作为管理功能还是在开发/测试期间以获得干净的系统。
按照内联示例,我编写了如下代码:
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 来访问可用队列”
我做错了吗?有没有更好的接口来枚举和清除队列?
我正在使用 ActiveMQ 5.15.12
这也是a bug report I submitted的话题
【问题讨论】: