我想知道我的ActiveMQ上的队列数,并且我有此代码,该代码可在我的ActiveMQ本地安装中使用:
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);
//connectionFactory.setTrustStore("truststore.ts");
//connectionFactory.setTrustStorePassword("password");
ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();
connection.start();
DestinationSource destinationQueues = connection.getDestinationSource();
Set<ActiveMQQueue> queues = destinationQueues.getQueues();
System.out.println(queues.size());
但是,当我在服务器上的ActiveMQ(与信任库)上使用它时,它将返回零队列。我知道该连接有效,因为我可以使用一个确切队列中的消息。我已经尝试过sleep
等其他线程的技巧,但仍然无法使用。
是否可能是因为SSL连接,在这种情况下是否需要更改某些内容?预先谢谢你。
答案 0 :(得分:0)
“目标源”位不能保证及时返回全部队列等。可能是您在代理上配置了SSL连接器不同,或者仅仅是由于JDK上SSL的吞吐量很慢而已数据尚未到达的实现。
答案 1 :(得分:0)
发现了问题。这是ActiveMQ的设置,可在activemq.xml中找到。 advisorySupport="false"
部分引起了问题。注释掉此设置后,查询将返回真实的队列数量。