@KafkaListener注解

bash 复制代码
@KafkaListener(topics = "${xxxx}", containerFactory = "xxx")
public void consume(String message) {
    service.save(xx);
}

在 Spring Boot 中,使用 @KafkaListener 注解消费 Kafka 消息时,如果 service.save(cleanWikiSource) 抛出异常,消息不会被认为已经成功消费完毕。相应的行为取决于 Kafka 配置的 ack 模式以及错误处理机制:

默认情况(ack 模式为 BATCH 或 RECORD):

如果 service.save(cleanWikiSource) 抛出异常,Kafka 会自动将消息标记为未成功消费,并会重新尝试交付此消息(即消息会被重新消费)。

如果配置了 max.poll.interval.ms 或 max.poll.records 等参数,可以控制消费者重试间隔和次数。

手动确认(ack 模式为 MANUAL 或 MANUAL_IMMEDIATE):

如果您启用了手动提交确认(通过 KafkaListener 配置 ackMode = MANUAL),则在成功处理完消息后需手动调用 Acknowledgment.acknowledge() 方法标记消息已被消费。

如果 cleanWikiSourceService.save 方法失败且没有调用 acknowledge(),那么消息将会被重新投递。

错误处理机制:

可以配置 SeekToCurrentErrorHandler(适用于 KafkaListenerContainerFactory)来处理消费异常。此类错误处理器允许指定重试次数和延迟时间,消息在达到最大重试次数后将跳过或交给死信队列。

相关推荐
阿里云云原生5 天前
告别冗长链路!Kafka × Table Bucket 实现开放表格式零 ETL 实时入湖
云原生·kafka
whaledown11 天前
Kafka 与 Java 消息队列入门:用订单场景理解核心机制
java·kafka·消息队列·springboot
guslegend11 天前
第1章:初始Kafka
分布式·kafka
Devin~Y11 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
小马爱打代码12 天前
Kafka消息队列监控:Topic积压、吞吐量、Broker负载及消费者组全观测
分布式·kafka
Solis程序员12 天前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
linux修理工14 天前
使用codebuddy学习kafka
分布式·学习·kafka
开开心心就好14 天前
解决截图被拦截黑屏问题的免费小工具
安全·智能手机·flink·kafka·pdf·音视频·1024程序员节
linux修理工14 天前
kafka积压
数据库·分布式·kafka
杰克逊的日记14 天前
kafka消息堆积了怎么处理
大数据·分布式·kafka