前言
最近在项目运行过程中发现,某些队列消费者宕机,导致消息阻塞,而我们没有及时发现的情况!为解决这种情况,需要我们及时获取队列情况,发现问题及时预警!
API
RabbitMQ提供了HTTP API手册,发现其中有获取队列情况的API。(本地的API手册地址为:http://localhost:15672/api)
所有API调用都需要做权限验证,需在请求头部中加入权限验证信息,如下
String auth = username + ":" + password;
BASE64Encoder enc = new BASE64Encoder();
String encoding = enc.encode(auth.getBytes());
httpConn.setRequestProperty("Authorization", "Basic " + encoding);
1.获取所有队列信息
http://host:15672/api/queues
2.获取单个队列信息
http://host:15672/api/queues/vhost/name
host为RabbitMQ部署地址,vhost为队列所在的虚拟主机名,name为队列名。
注意:若队列所在默认虚拟主机,即主机名为"/",请求时需将"/"url转码后("%2f")请求
请求示例:http://localhost:15672/api/queues/%2f/TestSendMsg2
{
"consumer_details": [],//消费者信息
"incoming": [],
"deliveries": [],
"messages_details": {
"rate": 0.0
},
"messages": 3,//对应消息数量
"messages_unacknowledged_details": {
"rate": 0.0
},
"messages_unacknowledged": 0,//对应消息数量
"messages_ready_details": {
"rate": 0.0
},
"messages_ready": 3,//对应消息数量
"reductions_details": {
"rate": 0.0
},
"reductions": 7189,
"message_stats": {
"publish_details": {
"rate": 0.0
},
"publish": 3
},
"node": "rabbit@ahy-PC",
"arguments": {},
"exclusive": false,
"auto_delete": false,
"durable": false,
"vhost": "/",
"name": "TestSendMsg2",
"message_bytes_paged_out": 0,
"messages_paged_out": 0,
"backing_queue_status": {
"avg_ack_egress_rate": 0.0,
"avg_ack_ingress_rate": 0.0,
"avg_egress_rate": 0.0,
"avg_ingress_rate": 0.004635025593395823,
"delta": [
"delta",
"undefined",
0,
0,
"undefined"
],
"len": 3,
"mode": "default",
"next_seq_id": 3,
"q1": 0,
"q2": 0,
"q3": 0,
"q4": 3,
"target_ram_count": "infinity"
},
"head_message_timestamp": null,
"message_bytes_persistent": 0,
"message_bytes_ram": 381,
"message_bytes_unacknowledged": 0,
"message_bytes_ready": 381,
"message_bytes": 381,
"messages_persistent": 0,
"messages_unacknowledged_ram": 0,
"messages_ready_ram": 3,
"messages_ram": 3,
"garbage_collection": {
"minor_gcs": 11,
"fullsweep_after": 65535,
"min_heap_size": 233,
"min_bin_vheap_size": 46422,
"max_heap_size": 0
},
"state": "running",
"recoverable_slaves": null,
"consumers": 0,
"exclusive_consumer_tag": null,
"effective_policy_definition": [],
"operator_policy": null,
"policy": null,
"consumer_utilisation": null,
"idle_since": "2019-10-12 2:43:46",
"memory": 12720
}
关于字段对应信息,可自行查看相关文档。
以上只列举两个API,其余API可自行查看文档