RabbitMQ在運行時,偶爾會有一些死信,即消息未正常消費,造成消息積壓在消息隊列中, 一直卡住,重復循環消費原來的消息隊列
那么就需要有一種機制,來查看RabbitMQ是否有消息未正常消費,從而讓RabbitMQ消費端重新啟動服務,讓消息能順利消費(例如讓Windows Service重啟等)
首先,查看RabbitMQ Manage的界面,可以看到,這里未應答的消息總數是0,在某些特定的情況下,有可能會出現未應答的消息的,所以需要進行檢測
RabbitMQ Management API文檔地址:https://pulse.mozilla.org/api/
我們這里使用的API是/api/queues/vhost/name
請記住,其中vhost參數使用提默認的 / ,需要Encoding為%2F
Postman中如下
權限部分使用Basic Auth,並輸入RabbitMQ Management的用戶名和密碼
返回的JSON如下

{ "consumer_details": [], "arguments": {}, "auto_delete": false, "backing_queue_status": { "avg_ack_egress_rate": 0.0, "avg_ack_ingress_rate": 0.0, "avg_egress_rate": 0.0, "avg_ingress_rate": 0.0, "delta": [ "delta", 16384, 57, 0, 98304 ], "len": 61, "mode": "default", "next_seq_id": 98304, "q1": 0, "q2": 0, "q3": 3, "q4": 1, "target_ram_count": "infinity" }, "consumer_utilisation": null, "consumers": 0, "deliveries": [], "durable": true, "effective_policy_definition": {}, "exclusive": false, "exclusive_consumer_tag": null, "garbage_collection": { "fullsweep_after": 65535, "max_heap_size": 0, "min_bin_vheap_size": 46422, "min_heap_size": 233, "minor_gcs": 19 }, "head_message_timestamp": null, "idle_since": "2019-11-04 8:57:13", "incoming": [], "memory": 30772, "message_bytes": 20576, "message_bytes_paged_out": 0, "message_bytes_persistent": 20576, "message_bytes_ram": 1247, "message_bytes_ready": 20576, "message_bytes_unacknowledged": 0, "messages": 61, "messages_details": { "rate": 0.0 }, "messages_paged_out": 0, "messages_persistent": 61, "messages_ram": 4, "messages_ready": 61, "messages_ready_details": { "rate": 0.0 }, "messages_ready_ram": 4, "messages_unacknowledged": 0, "messages_unacknowledged_details": { "rate": 0.0 }, "messages_unacknowledged_ram": 0, "name": "SyncData.5c8f2d5c806f0b43fc4a7a5c", "node": "rabbit@rabbit", "operator_policy": null, "policy": null, "recoverable_slaves": null, "reductions": 107151, "reductions_details": { "rate": 0.0 }, "single_active_consumer_tag": null, "state": "running", "type": "classic", "vhost": "/" }
其中Ready和Unacked的消息如下