30. RabbitMQ消息丢失
1. 前言
RabbitMQ经常被用于服务模块之间的解耦以及高并发削峰场景,之前的章节讨论了不同服务模式的特点,但是在生产环境中,因为机器以及网络设备的不可靠,保证消息的可靠是待解决的问题。在特定场景下消息可能存在丢失风险,本文将介绍如何预防这类的风险。
2. RabbitMQ消息丢失的场景
面试官提问:RabbitMQ 消息队列,在哪些场景下可能会丢失消息?
题目解析:
我们可以将 RabbitMQ 消息处理的过程分为三个步骤:
(1)生产阶段:生产者生产消息并且发送到消息队列;
(2)储存阶段:消息队列存储和处理消息;
(3)消费阶段:消息队列将消息转发到消费者。
上述每个步骤都有消息丢失的风险,候选人需要按顺序分别解释不同场景可能丢失的原因以及解决方案。
2.1 生产者生产消息并且发送到消息队列
可