您当前位置:资讯中心 >开发 >浏览文章

Spring实现Kafka重试Topic,真的太香了

来源:不详 日期:2024/1/26 7:48:10 阅读量:(0)

概述

Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重试,我们可以选择手动管理,并在成功的情况下增加偏移量。但是,这会暂时阻止队列消息的处理。我们可以选择异步方法。

为什么我们需要它?

如果发生错误,而不是停止队列消息的处理;我们可以将错误消息转移到不同的主题并再次处理。

如果在处理 Kafka 消息时出现错误,可以使用 RetryableTopic 注解以一定的时间间隔和一定的次数再次处理消息。如果完成尝试次数后错误仍然存在,则消息将发送到 DLT 队列。

如何使用?

我们首先回顾一下RetryableTopic注解可以取的一些值,以便您可以做出最适合您的设置:

attempts:尝试处理消息的次数。它的默认值为 3。如果完成所有尝试后仍然收到错误,则消息将发送到 DLT 队列。

backoff:用于确定处理消息的时间间隔。从 Backoff 类获取一个值。您可以在下面找到退避的详细示例。

排除/排除名称:允许您排除指定的异常类。当您添加到列表中的任何错误被抛出时,重试机制将不会被激活。

include / includeNames:仅当抛出指定的异常时才会激活重试机制。

kafkaTemplate:虽然您可以给出现有 kafkaTemplate bean 的名称,但您也可以为特定于重试的 Kafka 模板定义不同的 bean。

autoCreateTopics:决定是否自动创建Retry和DLT主题。

retryTopicSuffix / dltTopicSuffix:用于确定要添加到自动创建的主题末尾的后缀。

dltStrategy:如果不需要DLT,可以定义为NO_DLT。

SameIntervalTopicReuseStrategy/fixedDelayTopicStrategy(3.0.4之前):用于确定要创建的重试主题策略。创建 (SINGLE_TOPIC) 或尽可能多的尝试值 (MULTIPLE_TOPICS) 重试主题。

Backoff的示例:

  • 具有固定的增量值
Backoff(delay = 600000 ) // 每 10 分钟
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。