RabbitMQ的幂等性问题
首先明确什么叫幂等性。
幂等性:用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生副作用。
MQ中的消息会产生重复性消费的问题:消费者消费之后会返回ack给MQ,但是此时如果网络不好,故MQ未收到确认消息,该条消息会发给其他消费者或者网络好了之后再次发送给该消费者,但实际上这条消息已经被消费过了。这就是消费者消费重复的消息。
对于消费端幂等性保障的解决方案
-
唯一Id+指纹码机制
指纹码:利用一些规则或者时间戳拼接生成而来,但是一定要保证唯一性,查询他是否存在于数据库中。优势就是:简单。劣势:单个数据库会有写入性能瓶颈。
-
Redis原子性
利用Redis执行setnx命令,天然具有幂等性。从而实现不重复消费。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通