zoukankan      html  css  js  c++  java
  • 消息中间件如何解决消息丢失问题

    为了解决消息丢失问题,我们引入了一些重发机制,但也带来的另外一个问题:消息重复,我们来看下都有哪些情况会导致消息重复:

    消息发送超时,处于不确定状态,导致重试发送消息,有可能之前的消息已经发送成功,会出现消息重复的情况。解决的思路是,每个消息生成一个消息id,如果发送的消息Broker已经存在了,则丢弃。这种解决办法需要维护一个已经接收的消息的message id list。

    消息在Broker中只有一份,但是consumer重启前,未及时更新offset,导致consumer重启之后重复消费消息。

    上游业务给每个message 分配一个message ID,下游业务在接收到message之后,执行业务并且保存message ID,而且要讲两部分放到同一个事务中,保证业务执行成功,message ID肯定保存,业务执行失败,message ID肯定不会保存下来,利用db中存储的message id来做幂等。我们可以重新封装producer client和consumer client,将这部分message ID分配和判重的逻辑封装到client lib里面。

  • 相关阅读:
    Ajax基础
    css基础
    响应式容器布局
    PHP基础
    Unity 3d 刚体
    ASP.NET 大文件下载的实现思路及代码
    2015年第一篇 自律守则以及年度目标
    ItextSharp代码示例
    HTML5 新增通用属性
    c# 委托实例
  • 原文地址:https://www.cnblogs.com/Yanss/p/11676041.html
Copyright © 2011-2022 走看看