java 如何检查ActiveMQ“经典”队列是否有消费者

icomxhvb  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(140)

我在Sping Boot 中有一个方法,它连接到ActiveMQ“Classic”5.10.x服务器并咨询可用队列。我需要创建另一个方法来获取该列表并识别其中哪些没有活动消费者。你知道如何做到这一点吗?我目前正在使用Java 17和Sping Boot 3.0.1。
在这里,我留下一个例子,咨询可用队列列表的方法:

public Set<String> getQueues(String url) throws JMSException {
    try {
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
        activeMQConnectionFactory.setBrokerURL(url);
        activeMQConnectionFactory.setUserName(BROKER_USERNAME_1);
        activeMQConnectionFactory.setPassword(BROKER_PASSWORD_1);
        ActiveMQConnection connection = (ActiveMQConnection) activeMQConnectionFactory.createConnection();
        connection.start();
        DestinationSource ds = connection.getDestinationSource();
        Set<ActiveMQQueue> queues = ds.getQueues();
        Set<String> q = new HashSet<>();
        queues.stream().forEach(queue -> {
            try {
                q.add(queue.getQueueName());
            } catch (JMSException e) {
                throw new RuntimeException(e);
            }
        });
        connection.close();
        return q;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

字符串
我需要监视是否有队列累积消息,并且没有被消耗,因为它们会导致消息服务器服务崩溃。这是为了创建警报,而不是解决问题。

kokeuurv

kokeuurv1#

ActiveMQ支持管理视图,通过三种方式查看队列上的消费者计数:

  1. Webconsole
  2. Jolokia REST API
  3. JMX连接

相关问题