首页 > 其他分享 >RocketMQ重复消费的幂等性问题

RocketMQ重复消费的幂等性问题

时间:2024-05-30 21:59:45浏览次数:59  
标签:消费 重复 发送 生产者 消息 key RocketMQ

什么是幂等性?----》多次调用接口,得到的结果都一样。

用幂等性来解决重复消费的问题。

重复消费可以解决吗-----》重复消费根部避免不了。只能从消息的幂等消费入手。

为什么会有重复消费?

  1. 由于我们要求RocketMQ消息不丢失,要保证消息不丢失就会有重传机制。
  2. 消息发送成功,但是broker端提示你发送消息失败了,可能是因为网络波动导致超时的,生产者就会重新发送,所以生产者就重复发送了2条数据。
  3. 远程网络环境,成功的一定成功,失败的不一定失败,可能由于网络原因,ack没有打到生产者那里,生产者要重发。

**既然避免不了消息的重复消费,那下游如何做幂等?**

  1. 上游给下游传递一个唯一的unique key  , 比如订单就用订单号
  2. 下游根据这个key建立数据库的唯一索引约束,每次消费的时候就可以通过这个唯一索引来判断是否已经被消费过了。
  3. 为了性能更高的话,还可以考虑加分布式锁。

标签:消费,重复,发送,生产者,消息,key,RocketMQ
From: https://blog.csdn.net/qq_51967234/article/details/139335644

相关文章

  • 推荐一个小而全的 Java 工具类库,再也不用重复造轮子,简直太优雅(带私活源码)
    上周接到老大的需求说让整理下工具类,新项目要用,本想直接拿以前的改改直接用的,结果发现以前的工具类存在很多问题,光加解密工具类就重复写了很多个。赶紧跑去找有经验的同事商量对策,最终在Github上找到Hutool这款神器。简介Hutool是一个小而全的Java工具类库,通过静态......
  • 1.1k Star!天工Skywork-13B:性能全面超越LLaMA2、0门槛商用、消费级显卡进行部署和推理!
    原文链接:(更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号!)1.1kStar!天工Skywork-13B:性能全面超越LLaMA2、0门槛商用、消费级显卡进行部署和推理!......
  • 10W QPS高并发,如何防止重复下单?
    小北说在前面10wqps高并发,如何防止重复提交/支付订单?10wqps高并发,如何防止重复下单?10wqps高并发,如何防止重复支付?10wqps高并发,如何解决重复操作问题?最近有小伙伴在面试时遇到了这个的面试题。小伙伴支支吾吾......
  • 3.无重复字符的最长子串
    给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输......
  • Go--生成excel表格,循环赋值并避免重复项
    先下载第三方依赖包:goget-ugithub.com/xuri/excelize/v2 假设原数据格式为:typeDatastruct{PsastringGroupstringOperatorstring} 将数据插入新生成的execl表格中,并且当group值相同时,只更新该group的operator值,即最终数据中,group没有......
  • leetCode.82. 删除排序链表中的重复元素 II
    leetCode.82.删除排序链表中的重复元素II题目思路:代码classSolution{public:ListNode*deleteDuplicates(ListNode*head){autodummy=newListNode(-1);dummy->next=head;autop=dummy;while(p->next){......
  • LLM 大模型学习必知必会系列(九):Agent微调最佳实践,用消费级显卡训练属于自己的Agent!
    LLM大模型学习必知必会系列(九):Agent微调最佳实践,用消费级显卡训练属于自己的Agent!SWIFT支持了开源模型,尤其是中小型模型(7B、14B等)对Agent场景的训练,并将loss-scale技术应用到agent训练中,使中小模型APICall能力更稳定,并支持使用单张商业级显卡进行Agent推理和部署,可以直接在生......
  • RabbitMQ、RocketMQ、Kafka对比(消息组件的作用)
    在高并发的系统中,消息组件是最为常见的一款应用对比RacketMQ要比RabbitMQ性能高,但是不合适进行日志数据的采集(大数据采集最好别用)利用消息组件可以有效地实现数据缓冲的处理操作,例如:现在有一个抢购系系统,是需要考虑高并发状态下的用户请求正常处理问题服务器一旦接收远......
  • 【LeetCode算法】第83题:删除排序链表中的重复元素
    目录一、题目描述二、初次解答三、官方解法四、总结一、题目描述二、初次解答1.思路:双指针法,只需遍历一遍。使用low指向前面的元素,high用于查找low后面与low不同内容的节点。将具有不同内容的节点链接在low后面,实现重复元素的删除。2.代码:/***Definitionfor......
  • python 队列生产者消费者爬虫
    当使用Python编写一个基于队列的生产者消费者爬虫时,我们通常会使用threading或multiprocessing模块来处理并发,并使用queue模块来管理数据队列。下面是一个详细的示例,该示例展示了如何使用生产者线程生成URL,消费者线程爬取这些URL的内容。请注意,这里为了简化示例,我们将不会实际进......