从 Java/Spring 中检索 RabbitMQ 队列中未确认消息的数量

Posted

技术标签:

【中文标题】从 Java/Spring 中检索 RabbitMQ 队列中未确认消息的数量【英文标题】:Retrieving number of unacknowledged messages in RabbitMQ queue from Java/ Spring 【发布时间】:2012-11-23 03:37:24 【问题描述】:

有没有办法返回未确认的消息数量?

我正在使用此代码来获取队列中的消息数:

DeclareOk declareOk = amqpAdmin.getRabbitTemplate().execute(
        new ChannelCallback<DeclareOk>() 
            public DeclareOk doInRabbit(Channel channel)
                throws Exception 
                return channel.queueDeclarePassive(name);
            
        );
return declareOk.getMessageCount();

但我也想知道未确认消息的数量。

我已经看到 RabbitMQ 管理工具包含该信息(对于每个队列,它给出了 Ready/Unacked 和 Total 消息的数量),我想一定有一种方法可以从 Java/Spring 中检索这些信息。

谢谢

更新

好吧,似乎没有办法以编程方式完成,因为配置/队列列表不是 AMPQ 的一部分。

可以启用管理插件并查询有关队列的 REST Web 服务(除其他外)。更多信息在这里:

http://www.rabbitmq.com/management.html

【问题讨论】:

如果应用程序和 rabbitmq 在同一台机器上运行,您可能会使用带有 list_queues 参数的 rabitmqctl 命令行工具取消确认。从这里检查 Matthias 的答案groups.google.com/forum/m/?fromgroups#!topic/rabbitmq-discuss/… 【参考方案1】:

正如您在更新中所说,如果您启用管理插件,则可以查询其余api:

例如:

`http://username:password@queue-server:15672/api/queues/%2f/queue_name.queue`

这会返回带有(除其他外)的 json

messages_unacknowledged messages_ready

如果您有一条通往服务器的安全路线,那就太好了。

【讨论】:

在 RabbitMQ 3.4.1 中,我必须在路径末尾省略 .queue 才能使其正常工作。 目前我们没有调用 REST API,我们有任何 Java API 吗?因为有时这个电话的时间太长了,甚至超过一分钟。这种情况很少见,但它正在成为一个性能问题!【参考方案2】:

3.8.9 版本的实际网址:

http://username:password@queue-server:15672/api/queues/%2F/queue-name

【讨论】:

以上是关于从 Java/Spring 中检索 RabbitMQ 队列中未确认消息的数量的主要内容,如果未能解决你的问题,请参考以下文章

Java Spring Boot json 文件未找到异常

RabbitM简单应用

如何在Controller Java Spring中使用不同的GET方法

在Java Spring中将一个bean的值设置为另一个bean

在 DTO 中检索外键属性

Java Spring DAO 挂在 return 语句上