检测消息是否丢失的方法
- 类似于分布式链路系统追踪
- 利用消息的有序性来验证消息是否丢失
确保消息可靠传递
消息传递的三个阶段- 生产阶段
在生产阶段,生产者与broker之间主要通过请求确认机制来保证消息可靠传输,也就是说生产者只要收到broker的确认消息就代表消息发送成功
发送消息时,需要正确处理返回值或捕获异常
- 存储阶段
在正常情况下,只要broker正常运行就不会出现消息丢失,但如果宕机就会可能出现消息丢失
可以通过配置broker参数来避免因宕机消息丢失
对于单个节点的 Broker,需要配置 Broker 参数,在收到消息后,将消息写入磁盘后再给 Producer 返回确认响应,这样即使发生宕机,由于消息已经被写入磁盘,就不会丢失消息。
- 消费阶段
消费阶段采取和生产阶段相同方式处理,消费者从broker拉取消息后,业务逻辑处理成功后再向broker发送消息确认响应
不要在收到消息后就立即发送消费确认,而是应该在执行完所有消费业务逻辑之后,再发送消费确认。
内容来源说明:文章中的部分内容以及图片来自《极客时间-消息队列高手课》,写文章目的只是作为学习后的总结和整理
网友评论