MQ在高並發環境下,如果隊列滿了,如何防止消息丟失?


1、為什么MQ能解決高並發環境下的消息堆積問題?

MQ消息如果堆積,消費者不會立馬消費所有的消息,不具有實時性,所以可以解決高並發的問題。

性能比較好的消息中間件:Kafka、RabbitMQ,RocketMQ.

2、什么情況下會產生消息丟失的現象?

消息隊列滿了的情況下。

3、如何解決消息丟失的問題?

(1)生產者可以采用重試機制。因為消費者會不停的消費消息,可以重試將消息放入隊列。

如果還是不行,可以將消息記錄到數據庫,后期做補償。(不太推薦,不方便)

(2)死信隊列,可以理解為備胎。(推薦使用)

即在消息過期,隊列滿了,消息被拒絕的時候,都可以扔給死信隊列。

如果出現死信隊列和普通隊列都滿的情況,此時考慮消費者消費能力不足,可以對消費者開多線程進行處理。

最后:謝謝螞蟻課堂老師的講解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM