You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@KafkaListener默认Kafka确认策略及消息确认时机咨询

关于@KafkaListener默认确认策略及相关问题解答

1. @KafkaListener的默认Kafka确认(ack)策略是什么?

Spring Kafka中@KafkaListener的默认确认策略是RECORD模式:当监听器方法成功执行完毕后,会自动对当前消费的这条消息发送确认(ack)。

你给出的监听器代码如下:

@KafkaListener(topics = "${my_topic_listen}", autoStartup = "true")
public void listenForMessage(String message) {
    log.info("new message from kafka topic received: {}", message);
    if(message.length() >1000) {
       throw new RuntimeException("TooLongMessage");
    }
    log.info("message is checked");
}

① 是否会在调用log.info("new message from kafka topic received: {}", message);之前发送ack?

不会。默认的RECORD模式下,ack是在监听器方法成功执行完成后才发送的,所以这条日志语句执行时,ack还未发送。

② 若第一题答案为“否”,发生异常时是否仍会发送ack?

不会。当监听器方法抛出异常时,Spring Kafka不会发送ack,这条消息会按照默认的重试策略进行重试;如果重试失败,若配置了死信队列则会进入死信队列,否则会持续重试直到执行成功。

内容的提问来源于stack exchange,提问作者gstackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:22:02