查看rabbitmq消息堆積 java如何獲取rabbitmq隊(duì)列中消息數(shù)量?
java如何獲取rabbitmq隊(duì)列中消息數(shù)量?這里是rabbitmq的消息確認(rèn)機(jī)制:“為了保證消息不會(huì)丟失,rabbitmq支持消息確認(rèn)機(jī)制。在接收和處理消息之后,客戶機(jī)可以向rabbitmq發(fā)送一
java如何獲取rabbitmq隊(duì)列中消息數(shù)量?
這里是rabbitmq的消息確認(rèn)機(jī)制:“為了保證消息不會(huì)丟失,rabbitmq支持消息確認(rèn)機(jī)制。在接收和處理消息之后,客戶機(jī)可以向rabbitmq發(fā)送一條ACK消息,告訴它消息可以被安全刪除。如果客戶端在發(fā)送ACK之前意外死亡,rabbitmq將消息傳遞給下一個(gè)使用者客戶端。如果有多個(gè)客戶機(jī),則rabbitmq在傳遞消息時(shí)進(jìn)行輪詢。rabbitmq如何判斷客戶已經(jīng)死亡?唯一的依據(jù)是客戶端是否斷開(kāi)連接。沒(méi)有超時(shí)機(jī)制,也就是說(shuō),客戶端可以長(zhǎng)時(shí)間地處理消息。只要連接沒(méi)有斷開(kāi),rabbitmq將始終等待ACK消息?!拔椰F(xiàn)在面臨的問(wèn)題是:我有幾個(gè)線程要從消息隊(duì)列中獲取數(shù)據(jù),但是會(huì)有異常數(shù)據(jù)導(dǎo)致線程掛起,即“客戶端在發(fā)送ack之前意外死亡”。Rabbitmq會(huì)將消息傳遞給下一個(gè)客戶機(jī),這樣的異常數(shù)據(jù)會(huì)掛斷我的所有線程?,F(xiàn)在我想實(shí)現(xiàn)這個(gè)功能是的:如果異常數(shù)據(jù)導(dǎo)致進(jìn)程掛起,我不會(huì)讓rabbitmq把這個(gè)消息傳遞給下一個(gè)客戶機(jī),而是把它放到另一個(gè)地方或者單獨(dú)處理它。我該如何實(shí)現(xiàn)這一點(diǎn)?