rocketmq隊列數(shù)量多少合適 java如何獲取rabbitmq隊列中消息數(shù)量?
java如何獲取rabbitmq隊列中消息數(shù)量?這里是rabbitmq的消息確認機制:“為了保證消息不會丟失,rabbitmq支持消息確認機制。在接收和處理消息之后,客戶機可以向rabbitmq發(fā)送一
java如何獲取rabbitmq隊列中消息數(shù)量?
這里是rabbitmq的消息確認機制:“為了保證消息不會丟失,rabbitmq支持消息確認機制。在接收和處理消息之后,客戶機可以向rabbitmq發(fā)送一條ACK消息,告訴它消息可以被安全刪除。如果客戶端在發(fā)送ACK之前意外死亡,rabbitmq將消息傳遞給下一個使用者客戶端。如果有多個客戶機,則rabbitmq在傳遞消息時進行輪詢。rabbitmq如何判斷客戶已經(jīng)死亡?唯一的依據(jù)是客戶端是否斷開連接。沒有超時機制,也就是說,客戶端可以長時間地處理消息。只要連接沒有斷開,rabbitmq將始終等待ACK消息?!拔椰F(xiàn)在面臨的問題是:我有幾個線程要從消息隊列中獲取數(shù)據(jù),但是會有異常數(shù)據(jù)導致線程掛起,即“客戶端在發(fā)送ack之前意外死亡”。Rabbitmq會將消息傳遞給下一個客戶機,這樣的異常數(shù)據(jù)會掛斷我的所有線程?,F(xiàn)在我想實現(xiàn)這個功能是的:如果異常數(shù)據(jù)導致進程掛起,我不會讓rabbitmq把這個消息傳遞給下一個客戶機,而是把它放到另一個地方或者單獨處理它。我該如何實現(xiàn)這一點?
如何設計一個MQ消息隊列?
1. 在上圖中定義消息發(fā)送和消耗的過程
2。為消息定義消息協(xié)議,如ActiveMQ、stomp、XMPP等。定義消息協(xié)議,定義消息隊列需要滿足的場景
是否要保證消息的可靠性,必要時要保證存儲的高可用性
是否支持同步和異步消息
是否要保證消息的順序
是否需要延遲消息要支持
很多開源的實現(xiàn)功能可以參考詳細信息。例如,rocketmq是高度可靠的,Kafka是高吞吐量的,但不是高度可靠的。