

RabbitMQ怎么保证消息不被重复消费以及消息的可靠性
source link: https://blog.51cto.com/u_13794952/5702003
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

RabbitMQ怎么保证消息不被重复消费以及消息的可靠性
精选 原创
? 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
? 擅长领域:全栈工程师、爬虫、ACM算法
? 公众号:知识浅谈
RabbitMQ怎么保证消息不被重复消费以及消息的可靠性总结
?这次都给他拿下?
正菜来了⛳⛳⛳
?RabbitMQ怎么保证消息不被重复消费
1️⃣:消息队列发送ACK消息到生产者过程出现的问题
开启ACK确认机制后,发送方发送消息之后,消息队列发送ACK确认的时候,如果由于网络波动造成ACK消息丢失,发送方重复发送造成的消息重复。
解决方法:使用定时任务+Redis,发送之后如果没有收到ACK,定时重发,在消息队列处,使用redis记录收到的消息,如果收到redis存在的消息,说明之前已经收到过,便直接返回ACK。
2️⃣:消费者发送ACK消息到消息队列的过程中出现的问题
消息队列发送消息到消费者之后,消费之后,消费者返回ACK给消息队列,如果ACK由于网络的问题没有收到,消息队列会再次发送消息给消费者,如果此前已经消费过该消息,则为了防止消息的重复消费,保证幂等性,有两种解决方案。
- 消息中携带全局唯一的id,当消息重复发送时,检查该全局唯一id是否存在于数据库中。
- 使用redis记录已经消费的消息,当消息消费之后使用redis记录,当重复消费的时候直接返回ACK即可。
?RabbitMQ怎么保证消息的可靠性
?消息的持久化保证
消息队列开启消息的持久化机制
channel.queueDeclare(“queue.persistent.name”, true, false, false, null);
第二个参数true,表示durable=true;
?ACK确认机制保证
- 发送者发送消息之后,消息队列发送ACK确认。
- 消息队列发送消息之后,消费者发送ACK确认。
?开启消息重试机制
当消息发送之后没有被正常消费,发送方在一定的事件后重发消息,因为有可能上一次发送的时候,由于网络波动,发送失败。
?开启死信队列
当重复消息发送之后仍不能正常消费,把消息发送到死信队列,对于消费失败的消息进行人工干预。
以上就是关于个人对RabbitMQ怎么保证消息不被重复消费以及消息的可靠性的浅见,如有问题,请指正学习,希望有所帮助。
- 赞
- 收藏
- 评论
- 分享
- 举报
上一篇:SPI机制是什么,懂了
</div
Recommend
-
59
RabbitMQ流程简介(带Exchange) RabbitMQ使用一些机制来保证可靠性,如持久化、消费确认及发布确认等。 先看以下这个图: &...
-
35
1.本篇概要RabbitMQ针对这个问题,提供了以下几个机制来解决:生产者确认持久化手动Ack本篇博客我们先讲解下生产者确认机制,剩余的机制后续单独写博客进行讲解。2.生产者确认要想保证消息不丢失,首先我们得保证生产者能成功的将消息发送到RabbitMQ服务器。但在之...
-
55
一重复消息为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。1.1生产时消息重复由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。...
-
8
rabbitmq 如何保证消息的可靠传输(如何处理消息丢失的问题)? ...
-
7
一、为什么会出现重复消费的问题? RabbitMQ、RocketMQ、Kafka 都有可能出现重复消费的问题,导致重复消费的原因可能出现在生产者,也可能出现在 MQ 或 消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指 MQ...
-
8
@[toc] 微服务可以设计成消息驱动的微服务,响应式系统也可以基于消息中间件来做,从这个角度来说,在互联网应用开发中,消息中间件真的是太重要了。 今天,以 RabbitMQ 为例,松哥来和大家聊一聊消息中间消息发送可靠性的问题。 注意...
-
5
RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得 - 福隆苑居士 - 博客园 首先说一点,企业中最常用的实...
-
10
上一篇介绍了消息如何确保不丢失,本篇简单介绍如何保障消息不重复消费的处理方式。 对于接收端而言,对消息的确认来往是需要时间的。 如果同一个队列,同时存在多个客户端监听,那么多个客户端有一定概率能收到相同的信息。 这时候就会产生消...
-
10
MQ系列1:消息中间件执行原理
-
7
什么是kafka?分布式事件流平台。希望不仅仅是存储数据,还能够数据存储、数据分析、数据集成等功能。消息队列(把数据从一方发给另一方),消息生产好了但是消费方不一定准备好了(读写不一致),就需要一个中间商来存储信息,ka...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK