从 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 队列中未确认消息的数量的主要内容,如果未能解决你的问题,请参考以下文章
如何在Controller Java Spring中使用不同的GET方法