1

我是activeMQ的新手。我需要编写代码来获取所有队列并阅读消息。我没有找到像获取所有队列这样的 API。如何从ActiveMQ读取队列。如果可能的话,一些示例会有所帮助。

4

2 回答 2

5

在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>

您可以将运行 activemq 服务的tcp://localhost:61616/更改为tcp://180.50.50.10:61616/ 。

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
于 2016-09-16T09:45:54.817 回答
1

伙计,您已经在使用名为 activeMQ 的 API,您可以从该 API 获取所有队列。
我无法理解你所说的这部分问题
*我没有找到任何像 get Q* 这样的 api
无论如何你可以使用JMX。最简单的方法是通过将 JMX 控制台或 JConsole 指向代理 JVM 来使用 JMX。
以编程方式您还可以通过getDestinations()使用 Java 代码从代理获取所有活动目的地。您还可以通过 getDestinationMap() 获取由 ActiveMQDestination 索引的所有 Destination 对象的 Map。这使您可以查看各个目的地的详细信息,例如队列深度等

最后一种方法是使用WebConsole. ActiveMQ Web 控制台是一个基于 Web 的管理工具,用于使用 ActiveMQ。当与 JMX 支持一起使用时,它可以成为使用 ActiveMQ 的宝贵工具。
在他们的网站上关注 ActiveMQ 的详细支持,您可以在其中找到几乎所有内容:)

于 2012-12-18T07:01:13.553 回答