代码之家  ›  专栏  ›  技术社区  ›  Wheezil

使用JMS客户端枚举和删除activemq队列

  •  0
  • Wheezil  · 技术社区  · 4 年前

    我希望通过编程清除所有队列,或者作为管理功能,或者在开发/测试期间清除,以获得一个干净的系统。

    以下是内联示例,我编写了如下代码:

    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

    0 回复  |  直到 4 年前
        1
  •  1
  •   Tim Bish    4 年前

    最好的方法 manage 排队将通过 JMX Mbeans purging ,删除经理想要的等。

    另一个选择是使用 Jalokia

    有一些很好的文档可以通过JMX管理ActiveMQ,只需在谷歌上快速搜索即可。