spring - Spring AMQP Java 客户端中的队列大小

标签 spring rabbitmq spring-amqp

我使用 Spring amqp 1.1 版本作为我的 java 客户端。
我有一个队列,其中包含大约 2000 条消息。我想要一个服务来检查这个队列大小,如果它是空的,它会发送一条消息说“所有项目已处理”。

我不知道如何获得当前队列大小?请帮忙

我用谷歌搜索并找到了早期版本 1.0 中存在的一个类“RabbitBrokerAdmin”。
我认为它现在不存在于 1.1 中。

获取当前队列大小的任何指针?

最佳答案

所以我知道这有点晚了,并且已经找到了解决方案,但这是查看队列中消息计数的另一种方法

此解决方案假设您使用的是 spring rabbitmq 框架并已在应用程序配置中定义了队列,并定义了以下标签

<rabbit:queue>
<rabbit:admin>

Java类:
public class QueueStatsProcessor {
    @Autowired
    private RabbitAdmin admin;
    @Autowired
    private List<Queue> rabbitQueues;

    public void getCounts(){
        Properties props;
        Integer messageCount;
        for(Queue queue : rabbitQueues){
            props = admin.getQueueProperties(queue.getName());
            messageCount = Integer.parseInt(props.get("QUEUE_MESSAGE_COUNT").toString());
            System.out.println(queue.getName() + " has " + messageCount + " messages");
        }
    }
}

您还可以使用此解决方案读取附加到队列的当前消费者
http://docs.spring.io/spring-amqp/docs/1.2.1.RELEASE/api/org/springframework/amqp/rabbit/core/RabbitAdmin.html#getQueueProperties(java.lang.String)

关于spring - Spring AMQP Java 客户端中的队列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446443/

相关文章:

javascript - 通过js从spring资源包中获取消息

java - 自定义映射 Spring Data ElasticSearch

c# - rabbitmq 连接最佳实践我们是否在发布者中保持持久连接

docker - 如何使用 traefik 路由到一个暴露两个端口的 docker swarm 服务?

java - RabbitMQ + Spring 集成 : Message conversion from queue bound to a topic exchange

spring - TransactionManager Spring 4 hibernate 4 NoSuchMethodError

java - 如何停止Spring的默认输出?

docker - 如何从 docker run 命令向主管传递环境变量

java - Spring RabbitMQ - xml配置 - 手动ack

rabbitmq - spring-amqp HA 支持