@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)来处理消费异常。此类错误处理器允许指定重试次数和延迟时间,消息在达到最大重试次数后将跳过或交给死信队列。

相关推荐
jiayong235 小时前
Kafka 高吞吐消息链路常见面试问题及详细解答
分布式·面试·kafka
段一凡-华北理工大学6 小时前
工业领域的Hadoop架构学习~系列文章05:Kafka消息队列 - 工业数据流传输
人工智能·hadoop·学习·架构·kafka·工业智能体·高炉炼铁智能化
西安邮电大学1 天前
Kafka保证消息顺序性
java·后端·kafka
Devin~Y1 天前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 可观测性 + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·kubernetes·mybatis
西安邮电大学1 天前
Kafka如何避免重复消费
java·后端·其他·面试·kafka
未若君雅裁1 天前
Kafka 数据存储与清理机制:Topic、Partition、Segment与日志删除
分布式·kafka
大帅点兵2 天前
设计一个金融交易监控系统
大数据·clickhouse·flink·spark·kafka·hbase
Plastic garden2 天前
Kafka
分布式·kafka
未若君雅裁2 天前
Kafka 顺序消费:分区、消费者组、Key与业务有序性
分布式·微服务·kafka
Advancer-2 天前
点评plus---异步消费之后可靠的生成订单
java·spring·kafka