简介
说明
本文介绍RabbitMQ消息丢失的原因以及解决方案(即:如何保证消息不丢失)。
消息在生产者、MQ服务器、消费者都可能丢失消息,本文分析这三处消息丢失的原因以及解决方案。
对于消息队列(MQ)来说,消息丢失/消息重复/消费顺序/消息堆积是比较常见的问题,都属于消息异常,这几个问题比较重要,面试中也会经常问到。
官方文档
Consumer Acknowledgements and Publisher Confirms — RabbitMQ
消息丢失的情景
首先明确一条消息的传送流程:生产者->MQ->消费者
所以这三个节点都可能丢失数据:
- Producer端
- 发送消息过程中出现网络问题:producer以为发送成功,但RabbitMQ server没有收到;
- RabbitMQ server 端
- 接收到消息后由于服务器宕机或重启等原因(消息默认存在内存中)导致消息丢失;
- Consumer端
- Consumer端接收到消息后自动返回ack,但后边处理消息出错,没有完成消息的处理;
生产者丢失消息
消息丢失的情景
生产者将数据发送到RabbitMQ的时候,可能因为网络问题导致数据没到达RabbitMQ Server。
解决方案1:发送方确认机制(推荐,最常用)
此内容仅限VIP查看,请先登录
请先
!