我正在尝试检查给定的rabbitmq队列是否为空。 为此,我试图使用:
channel.queueDeclarePassive(queueName).getMessageCount().
使用此功能,无论rabbitmqctl
list_queues
显示的消息数量如何,我总是得到0作为答案。
据我所知,目前还没有可用的API。
我想要rabbitmqctl
list_queues
给出相同的答案。请建议一种方法。
答案 0 :(得分:5)
您无法使用SDK获取邮件数量。 channel.queueDeclarePassive(queueName).getMessageCount()通常不正确,因为它不会计算等待确认的消息。
您可以启用管理插件并通过REST API查询队列:
http://localhost:15672/api/queues/vhost/queue_name
响应包含总消息数以及处理/就绪状态中的消息。 访问“localhost:15672 / api”以查看有关如何调用它的更多详细信息。
以下是本地服务器上的示例响应:
{
"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"
}
答案 1 :(得分:0)
使用以下网址通过http api
访问详细信息 http://public-domain-name:15672/api/queues/%2f/queue_name
或使用localhost cli promt中的以下命令,
curl -i -u guest_uname:guest_password http://localhost:15672/api/queues/%2f/queue_name
其中, %2f是默认的vhost“/”