1、為什么MQ能解決高並發環境下的消息堆積問題?
MQ消息如果堆積,消費者不會立馬消費所有的消息,不具有實時性,所以可以解決高並發的問題。
性能比較好的消息中間件:Kafka、RabbitMQ,RocketMQ.
2、什么情況下會產生消息丟失的現象?
消息隊列滿了的情況下。
3、如何解決消息丟失的問題?
(1)生產者可以采用重試機制。因為消費者會不停的消費消息,可以重試將消息放入隊列。
如果還是不行,可以將消息記錄到數據庫,后期做補償。(不太推薦,不方便)
(2)死信隊列,可以理解為備胎。(推薦使用)
即在消息過期,隊列滿了,消息被拒絕的時候,都可以扔給死信隊列。
如果出現死信隊列和普通隊列都滿的情況,此時考慮消費者消費能力不足,可以對消費者開多線程進行處理。
最后:謝謝螞蟻課堂老師的講解。