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

核心流程

相关推荐
骑着蜗牛撵大象32719 小时前
558 万美元训出 671B 模型:DeepSeek-V3 算法与系统的协同拆解
分布式·算法·moe·deepseek-v3·mla·fp8训练
德迅云安全-上官19 小时前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏
麻瓜code1 天前
分布式锁演进:从一个用户下两单,到 Redisson,我改了四版
分布式·wpf
starzy19901 天前
Kafka网络层第一道门:Acceptor线程是怎么启动的
大数据·kafka
skywalk81631 天前
hive —— 多机 AI Agent 协同的任务总线:分布式,多节点同时运行,保障不会宕机
人工智能·hive·分布式
huaweichenai1 天前
spring boot对接kafka实现消息队列处理
spring boot·后端·kafka
你看我名字1 天前
Kafka 架构、消息可靠性与生产运维:从分区模型到故障治理
运维·架构·kafka
一条泥憨鱼1 天前
【RabbitMQ】高级篇
java·分布式·rabbitmq·php·ruby
棣廷1 天前
初识Spark Core
大数据·分布式·spark
凯凯姜1 天前
分布式锁场景问题
分布式