所有分类
  • 所有分类
  • 未分类

RabbitMQ消息丢失的原因与解决方案

简介

说明

本文介绍RabbitMQ消息丢失的原因以及解决方案(即:如何保证消息不丢失)。

消息在生产者、MQ服务器、消费者都可能丢失消息,本文分析这三处消息丢失的原因以及解决方案。

对于消息队列(MQ)来说,消息丢失/消息重复/消费顺序/消息堆积是比较常见的问题,都属于消息异常,这几个问题比较重要,面试中也会经常问到。

官方文档

Consumer Acknowledgements and Publisher Confirms — RabbitMQ

消息丢失的情景

首先明确一条消息的传送流程:生产者->MQ->消费者

所以这三个节点都可能丢失数据:

  1. Producer端
    1. 发送消息过程中出现网络问题:producer以为发送成功,但RabbitMQ server没有收到;
  2. RabbitMQ server 端
    1. 接收到消息后由于服务器宕机或重启等原因(消息默认存在内存中)导致消息丢失;
  3. Consumer端
    1. Consumer端接收到消息后自动返回ack,但后边处理消息出错,没有完成消息的处理;

生产者丢失消息

消息丢失的情景

生产者将数据发送到RabbitMQ的时候,可能因为网络问题导致数据没到达RabbitMQ Server。

解决方案1:发送方确认机制(推荐,最常用)

此内容仅限VIP查看,请先
1

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录