从java代码获取rabbitmq队列中的消息计数
我试图检查给定的rabbitmq队列是否为空。 为此,我尝试使用:从java代码获取rabbitmq队列中的消息计数,java,rabbitmq,message-queue,Java,Rabbitmq,Message Queue,我试图检查给定的rabbitmq队列是否为空。 为此,我尝试使用: channel.queueDeclarePassive(queueName).getMessageCount(). 使用此选项,无论rabbitmqctllist\u queues显示多少消息,我总是得到0作为答案。 据我所搜索的,没有可用于此的API 我想要与rabbitmqctllist\u queues给出的答案相同的答案。请建议一种方法。您无法使用SDK获取消息计数。channel.queueDeclarePassiv
channel.queueDeclarePassive(queueName).getMessageCount().
使用此选项,无论rabbitmqctl
list\u queues
显示多少消息,我总是得到0作为答案。
据我所搜索的,没有可用于此的API
我想要与
rabbitmqctl
list\u queues
给出的答案相同的答案。请建议一种方法。您无法使用SDK获取消息计数。channel.queueDeclarePassive(queueName).getMessageCount()通常不正确,因为它不会统计等待确认的消息
您可以启用管理插件并通过REST API查询队列:
http://localhost:15672/api/queues/vhost/queue_name
响应包含消息总数以及处于处理/就绪状态的消息。
访问“localhost:15672/api”,查看有关如何调用它的更多详细信息
以下是it在本地服务器上的响应示例:
{
"memory":14680,
"message_stats":{
"publish":1,
"publish_details":{
"rate":0
}
},
"messages":1,
"messages_details":{
"rate":0
},
"messages_ready":1,
"messages_ready_details":{
"rate":0
},
"messages_unacknowledged":0,
"messages_unacknowledged_details":{
"rate":0
},
"idle_since":"2014-02-21 18:01:54",
"policy":"",
"exclusive_consumer_tag":"",
"consumers":0,
"backing_queue_status":{
"q1":0,
"q2":0,
"delta":[
"delta",
0,
0,
0
],
"q3":0,
"q4":1,
"len":1,
"pending_acks":0,
"target_ram_count":"infinity",
"ram_msg_count":1,
"ram_ack_count":0,
"next_seq_id":1,
"persistent_count":0,
"avg_ingress_rate":0,
"avg_egress_rate":0,
"avg_ack_ingress_rate":0,
"avg_ack_egress_rate":0
},
"status":"running",
"name":"01d99c41-7e08-4122-a7f3-c57d25a460f5",
"vhost":"/",
"durable":true,
"auto_delete":false,
"arguments":{
},
"node":"rabbit@SHACNG109WQPY"
}
使用以下url通过http api访问详细信息
http://public-domain-name:15672/api/queues/%2f/queue_name
或者从localhost cli promt使用以下命令
curl-i-u guest\u uname:guest\u密码http://localhost:15672/api/queues/%2f/queue_name
在哪里,,
%2f是默认的vhost“/”尝试使用
频道。queueDeclare
代替尝试使用此频道。。不走运。。仍然给出0作为答案。我正在尝试这样做,但对我无效(我可以打开../api,也可以打开../api/queues,但是../api/queues/vhost和../api/queues/vhost/queue_名称编号。你知道我可以尝试做些什么吗?你提到过,你可以启用管理插件“”,这是什么意思?谢谢!http://localhost:15672/api/queues/%2f/hello
-其中“hello”队列名称和“/”-vhost名称