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

相关推荐
Hello.Reader5 小时前
Kafka 4.0 五大 API 选型指南、依赖坐标、上手示例与最佳实践
分布式·kafka·linq
鼠鼠我捏,要死了捏6 小时前
Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析
kafka·rabbitmq·rocketmq
wyn200011286 小时前
KafKa学习笔记
笔记·学习·kafka
可观测性用观测云15 小时前
通过 KafkaMQ 接入Skywalking 数据最佳实践
kafka
邂逅星河浪漫20 小时前
Docker 详解+示例
linux·docker·容器·kafka
玄辰星君1 天前
【在 macOS 系统上使用 Docker 启动 Kafka 的完整指南】
macos·docker·kafka
友莘居士1 天前
Logstash数据迁移之mysql-to-kafka.conf两种路由决策对比
mysql·kafka·logstash·路由决策
斯普信专业组1 天前
Fluent Bit针对kafka心跳重连机制详解(上)
kafka·fluent bit
哈基米喜欢哈哈哈1 天前
Kafka复制机制
笔记·分布式·后端·kafka
孫治AllenSun1 天前
【Kafka】重点概念和架构总结
分布式·架构·kafka