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

相关推荐
杰克逊的日记26 分钟前
kafka的topic扩容分区会对topic任务有什么影响么
分布式·kafka
IT成长日记2 小时前
【Kafka基础】监控与维护:动态配置管理,灵活调整集群行为
分布式·kafka·动态配置管理
shepherd1264 小时前
从零搭建高可用Kafka集群与EFAK监控平台:全流程实战总结
分布式·后端·kafka
一个天蝎座 白勺 程序猿7 小时前
大数据(7.5)Kafka Edge在5G边缘计算中的革新实践:解锁毫秒级实时处理的无限可能
大数据·kafka·edge
爱编程的王小美7 小时前
Kafka基础知识
分布式·kafka
CopyLower8 小时前
深入剖析 Kafka 的零拷贝原理:从操作系统到 Java 实践
java·kafka·linq
stormsha8 小时前
使用多进程和 Socket 接收解析数据并推送到 Kafka 的高性能架构
分布式·架构·kafka
缺一句感谢和缺一句道歉8 小时前
阿里云kafka集成boot在docker启动找不到kafka.client.truststore.jks文件问题
java·spring boot·kafka
明天过后ww1 天前
RocketMQ和kafka 的区别
分布式·kafka·rocketmq
一个天蝎座 白勺 程序猿1 天前
大数据(7.3)Kafka量子安全加密实践指南:构建抗量子计算攻击的消息系统
大数据·安全·kafka·量子计算