【发布时间】:2012-12-18 06:45:25
【问题描述】:
我是 activeMQ 的新手。我需要编写代码来获取所有队列并阅读消息。 我没有找到像获取所有队列这样的 API。 如何从 ActiveMQ 读取队列。如果可能的话,一些示例会有所帮助。
【问题讨论】:
-
你在用什么?原生 API? JMS 绑定? JEE MDB?
我是 activeMQ 的新手。我需要编写代码来获取所有队列并阅读消息。 我没有找到像获取所有队列这样的 API。 如何从 ActiveMQ 读取队列。如果可能的话,一些示例会有所帮助。
【问题讨论】:
在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
【讨论】:
伙计,您已经在使用名为 activeMQ 的 API,并且您可以从该 API 获取所有队列。
我无法理解您所说的这部分问题
* 我没有找到像get Q这样的api*
无论如何,您都可以使用 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 :)
【讨论】: