我想檢查給定的rabbitmq隊列是否爲空。 對於我試圖使用方法:從java代碼獲取rabbitmq隊列中消息的數量
channel.queueDeclarePassive(queueName).getMessageCount().
使用此我總是得到0作爲答案,不論由rabbitmqctl
list_queues
顯示的郵件數量。 據我所搜索,沒有可用的API。
我想要得到與rabbitmqctl
list_queues
給出的答案相同的答案。請建議一種方法來實現。
我想檢查給定的rabbitmq隊列是否爲空。 對於我試圖使用方法:從java代碼獲取rabbitmq隊列中消息的數量
channel.queueDeclarePassive(queueName).getMessageCount().
使用此我總是得到0作爲答案,不論由rabbitmqctl
list_queues
顯示的郵件數量。 據我所搜索,沒有可用的API。
我想要得到與rabbitmqctl
list_queues
給出的答案相同的答案。請建議一種方法來實現。
您無法使用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":"[email protected]"
}
感謝@junius它是真的很有幫助。 – user3184719
我正在嘗試這樣做,但它對我無效。 :(我可以打開../api,也../api/queues,但../api/queues/vhost和../api/queues/vhost/queue_name no。你知道我能做些什麼嗎?工作?你提到,你可以啓用管理插件''他的意思是什麼?謝謝! –
'http:// localhost:15672/api/queues /%2f/hello' - 其中'hello'隊列名稱,'/ ' - 虛擬主機名稱 – sharp
使用下面的鏈接直接通過HTTP API訪問的細節,
http://public-domain-name:15672/api/queues/%2f/queue_name
或使用後從本地主機CLI PROMT命令,
curl -i -u guest_uname:guest_password http://localhost:15672/api/queues/%2f/queue_name
其中, %2F是默認的虛擬主機「/」
嘗試使用'channel.queueDeclare'代替 – pinepain
與此也..沒有運氣嘗試..仍然給0作爲答案.. – user3184719