「扫码关注我,面试、各种技术(mysql、zookeeper、微服务、redis、jvm)持续更新中~」
RabbitMQ特性
- 异步
- 解耦
- 削峰填谷
正是由于其存在以上特性,所以被广泛应用于实际开发中,但是线上环境却存在消息丢失的场景,需要我们通过一些技术手段来保证最终数据的一致性(即MQ消息不丢失),首先我们先需要了解下RabbitMQ整体的架构图如下:
RabbitMQ组成
通过上面架构图我们可以看到RabbitMQ大致分为3部分,
- 客户端(生产者)
- RabbitMQ消息中间件
- 服务端(消费者)
RabbitMQ消息丢失原因
那么究竟哪些环节会导致消息丢失呢?
- 生产者发送消息到RabbitMQ服务器后,RabbitMQ服务器出现宕机
- RabbitMQ服务器出现类似脑裂问题后重启服务
- 消费者接收到MQ消息后出现宕机或者业务处理异常