当前位置: 首页 > news >正文

Kafka延迟队列实现分级重试

技术方案

方案背景

Kafka队列消息消费处理过程中,发生处理异常,需要实现重试机制,并基于重试次数实现不同延迟时间重试方案。

方案介绍

通过实现Kafka延迟队列来实现消息重试机制。

目标:

  1. 支持所有业务场景的延迟重试
  2. 支持多级别延迟重试
  3. 保证消息 最少消费一次

核心内容:

  1. 延迟队列,Kafka本身不支持延迟队列机制,这里我们通过定义多种Topic来扩展实现。例如Topic-1、Topic-2、Topic-3 分别代表延迟1分钟、2分钟、3分钟的队列。
    a. 每种延迟级别独立一个Topic
    b. 分区数建议与延迟调度服务部署量一致,以便于调度服务简化处理。建议值 2

  2. 延迟队列消费调度服务,负责从延迟队列拉取消息。
    a. 判断消息是否达到延迟时间,
    i. 若未达到,则delay 延迟时间-当前时间;
    ii. 若已达到,则将消息转发至对应的业务消息队列。
    b. 集群部署数量 建议值 2,消费部署数与分区数一致,以保证数据消费顺序及处理及时性
    c. 若重试次数已达到最大值,则丢失数据,并发送异常警报(钉钉)
    d. 考虑延迟队列修改offset,重新处理消息机制

  3. 业务消费服务改造,
    a. 数据处理异常时,组装延迟重试消息,将异常数据推送至延迟队列消息。
    b. 鉴于当前业务消费 BulkCopy 批量处理逻辑

技术架构

架构图
Topic-1、Topic-2、Topic-3 分别代表延迟1分钟、2分钟、3分钟的队列
在这里插入图片描述

核心流程

在这里插入图片描述

相关文章:

  • 在eclipse中通过git放弃某个版本之前所有的更新
  • Cpp网络编程Winsock API
  • iOS 按键越狱脚本支持一键新机软件教程
  • TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用
  • git错误:fatal: detected dubious ownership in repository at xxxxxx
  • 基于Spring Boot的轻型卡车零部件销售平台的设计与实现(LW+源码+讲解)
  • Python:爬虫概念与分类
  • [Effective C++]条款26:尽可能延后变量定义的出现时间
  • 【Java虚拟机】JVM
  • Mac 设置静态IP的方法 和 Mac 设置静态IP后 无法联网
  • AI学习记录-QWQ32b太强了
  • 网站改版html页面 NGINX 借用伪静态和PHP脚本 实现301重定向跳转
  • Vue3服务端渲染深度解析:从Nuxt3架构到性能优化实战
  • 音视频开发从入门到精通:编解码、流媒体协议与FFmpeg实战指南
  • ctfshow——web入门176~180
  • Redis-17.在Java中操作Redis-Spring Data Redis使用方式-通用操作
  • 类的其它特性
  • 网络通信三大核心表项详解:MAC表、ARP表、路由表
  • 【AI插件开发】Notepad++ AI插件开发实践:从Dock窗口集成到功能菜单实现
  • CentOS 上 Apache Kafka 2.13-3.8.1 集群部署指南(ZooKeeper 模式)
  • 有乘客被高铁车门夹住?铁路回应:系突感不适下车,未受伤,列车正点发车
  • 恒瑞医药通过港交所上市聆讯,最快或5月挂牌上市
  • 北美票房|“雷霆”开画票房比“美队4”低,但各方都能接受
  • 新剧|《执法者们》《亲爱的仇敌》5月7日开播
  • 专访|刘伟强:在《水饺皇后》里,我放进儿时全家福照片
  • 研究完蚂蚁搬家,我好像明白了为什么我们总是堵车