我是 activeMQ 的新手。我需要编写代码来获取所有队列并阅读消息。 我没有找到任何像获取所有队列的API。 如何从 ActiveMQ 中读取队列。如果可能,某些示例将会有所帮助。
答案 0 :(得分:4)
在java中获取ActiveMQ中的所有队列。
在 pom.xml
中添加Maven依赖项<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.14.0</version>
</dependency>
您可以将 tcp:// localhost:61616 / 更改为 tcp://180.50.50.10:61616 / ,其中activemq服务正在运行。
Java代码:
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616/");
ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();
DestinationSource ds = connection.getDestinationSource();
connection.start();
Set<ActiveMQQueue> queues = ds.getQueues();
for (ActiveMQQueue activeMQQueue : queues) {
try {
System.out.println(activeMQQueue.getQueueName());
} catch (JMSException e) {
e.printStackTrace();
}
}
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
控制台输出:
HtmlQueue
emaildewsgmc
pdfdirectinpirepscli
pdfdirectinpirecli
InQueue
ReceiveQueue
NormalPriorityQueue
emaildirecthp
pdfdewsgmc
pdfdirecthp
Send2Recv
SaveQueue
LowPriorityQueue
emaildewshp
HighPriorityQueue
PdfQueue
AnotherDest
pdfdewshp
emaildirectgmc
答案 1 :(得分:1)
Man你已经在使用一个名为activeMQ的API,并且从这个API你可以得到所有的队列。
我无法理解你所说的这一部分你说的是什么
*我没有发现任何api喜欢获得Q *
无论如何,你可以使用 JMX 。
最简单的方法是通过将JMX控制台或JConsole指向代理JVM来使用JMX。
以编程方式您还可以通过getDestinations()使用Java代码从代理获取所有活动目标。
您还可以通过getDestinationMap()获取ActiveMQDestination索引的所有Destination对象的Map。这使您可以查看各个目标详细信息,例如队列深度等等。
最后一种方法是使用 WebConsole。 ActiveMQ Web控制台是一个基于Web的管理工具,用于使用ActiveMQ。当与JMX支持一起使用时,它可以成为使用ActiveMQ的宝贵工具。
请遵循detailed support of ActiveMQ on their website where you can find almost everything:)