获取ActiveMQ中的队列名称列表

我试过下面的代码来获取ActiveMQ中的队列列表。 但它不起作用。 我的ActiveMQ中有4个队列。

try { ActiveMQConnection.makeConnection(URL).start(); Set allque= ActiveMQConnection.makeConnection().getDestinationSource().getQueues(); Iterator itr= allque.iterator(); while(itr.hasNext()){ ActiveMQQueue q= itr.next(); System.out.println(q.getQueueName()); } } catch (Exception e) { e.printStackTrace(); } 

请告诉我代码中的任何更正或一些新代码都可以完成。

目标源function不是在Broker上查找目标的保证方法。 在许多情况下,该function可能无法提供任何结果,例如,当Broker上的顾问function被禁用或客户端已配置为不查看建议时。 您还可以立即查询目标,这不一定允许从Broker将顾问分派到客户端所需的时间。

更可靠的机制是Broker上的JMX支持 ,它提供了获取目标列表的方法以及有关正在运行的代理实例的大量其他信息。

有很多文章展示了如何将JMX与ActiveMQ一起使用。

你必须在同一个连接上调用getDestinationSource()。getQueues()

 try { ActiveMQConnection conn = ActiveMQConnection.makeConnection(URL); conn.start(); Set allque= conn.getDestinationSource().getQueues(); Iterator itr= allque.iterator(); while(itr.hasNext()){ ActiveMQQueue q= itr.next(); System.out.println(q.getQueueName()); } } catch (Exception e) { e.printStackTrace(); }