RabbitMQ的幂等性问题

首先明确什么叫幂等性

幂等性:用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生副作用。

MQ中的消息会产生重复性消费的问题:消费者消费之后会返回ack给MQ,但是此时如果网络不好,故MQ未收到确认消息,该条消息会发给其他消费者或者网络好了之后再次发送给该消费者,但实际上这条消息已经被消费过了。这就是消费者消费重复的消息。

对于消费端幂等性保障的解决方案

  1. 唯一Id+指纹码机制

    指纹码:利用一些规则或者时间戳拼接生成而来,但是一定要保证唯一性,查询他是否存在于数据库中。优势就是:简单。劣势:单个数据库会有写入性能瓶颈。

  2. Redis原子性

    利用Redis执行setnx命令,天然具有幂等性。从而实现不重复消费。

posted @   finajoy  阅读(548)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示