您的当前位置:首页正文

RabbitMQ 如何确保消息的成功投递?幂等性?顺序性?

2024-11-07 来源:个人技术集锦

RabbitMQ 如何确保消息的成功投递?RabbitMQ 如何保证不重复消费,保证数据不丢失?分布式系统里,如何保证数据的一致性?一串连环炮你是否顶得住?

其实这几个问题的原理大同小异,都可以在统一的思路上解答。

先明白一点,问什么我们的业务需要用到MQ,不管是RabitMQ,kafka,还是RocketMQ?

说白了,MQ异步处理是互联网分层架构中的解耦利器,可以帮助系统处理高并发,削峰填谷。

  • 解耦:使服务相对独立,降低强依赖性,减少代码的维护成本,增强可扩展性;
  • 异步:将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度;
  • 削峰:并发量大的时候,避免所有的请求直接压到数据库;

我们拿 RabitMQ(其它同理) 举例,展示一条消息从生产到消费的过程:

明白了这个过程,我们再一起看问题。


问题1:如何确保不重复消费?

保证消息不被重复消费的关键,是保证消息队列的

显示全文