• RocketMQ利用redis来实现消息幂等


    1、为什么要做消息幂等:消息会有重复

    今天正式服务器上2台服务器收到同一个消息,因为是集群模式不可能两台服务器都收到同一个消息,后来排查发现是由于网络各种原因确认消息没及时到达到rocketmq,所以会重发。

    1. 当系统的调用链路比较长的时候,比如系统A调用系统B,系统B再把消息发送到RocketMQ中,在系统A调用系统B的时候,如果系统B处理成功,但是迟迟没有将调用成功的结果返回给系统A的时候,系统A就会尝试重新发起请求给系统B,造成系统B重复处理,发起多条消息给RocketMQ造成重复消费
    2. 在系统B发送消息给RocketMQ的时候,也有可能会发生和上面一样的问题,消息发送超时,结果系统B重试,导致RocketMQ接收到了重复的消息
    3. 当RocketMQ成功接收到消息,并将消息交给消费者处理,如果消费者消费完成后还没来得及提交offset给RocketMQ,自己宕机或者重启了,那么RocketMQ没有接收到offset,就会认为消费失败了,会重发消息给消费者再次消费

    消息重复消费场景

    https://blog.csdn.net/LO_YUN/article/details/104135197

    1、RocketMQ利用redis来实现消息幂等:

  • 相关阅读:
    PHP UPLOAD 实现附件上传
    迁移服务器小记
    php TP5.1 将session 存入Redis
    js 精度问题的处理方法
    Aspect 浏览器插件
    JavaScript 构建工具 的发展和变化
    js input 保留1位小数
    如何使用adb 安装 apk应用
    php精度计算问题
    [Typescript] 89. Hard Currying 1
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12291789.html
Copyright © 2020-2023  润新知