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分钟的队列

核心流程

相关推荐
Thomas.Sir4 天前
第21课:PyTorch|GPU多卡训练与分布式训练基础【让多卡并行成为你的加速引擎】
人工智能·pytorch·分布式
Cicada1284 天前
库存消息消费的正确性设计——从幂等窗口到批量流水线
分布式·系统架构
Nano叶落4 天前
Kafka 消费积压排查入门:Docker 搭环境亲手制造一次 ‘消息堵死‘,10 分钟看懂 Lag
kafka
Francek Chen5 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Gl�ria5 天前
Hadoop/YARN 集群缩容:下线DN节点
大数据·hadoop·分布式
吉甫作诵5 天前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列
imDwAaY5 天前
消息队列四大核心问题:顺序性、幂等性、可靠性与一致性
学习·kafka·rabbitmq
wno7046 天前
Spring Boot整合Kafka
spring boot·kafka
是Dream呀6 天前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent