消息從生產者出發,發送到消費隊列,最終被消費者消費。
在這個過程中有哪些場景會發生消息丟失呢?
發生消息丟失的場景,如上圖所示:
- 消息由生產者發送到隊列中,當消息發出去沒有收到消息隊列的ack,會導致消息的丟失
- 消息已經到了隊列,但是在消息還未持久化、消息隊列掛掉重啓,導致消息丟失
- 消息已經被消費者持有,但是消費端發生了異常,消息消費失敗,導致消息丟失
同步的方式,捕獲消息發送異常的,異常了在發送消息;
rabbitMq,採用confirm的方式,採用回調的方式,來異步的處理消息發送失敗的情況;
queue設置爲持久化、deliveryMode=2;
消費端,設置爲手動應答,配置死信隊列;