Java Kafka侦听器方法中发生异常时不提交偏移量

Java Kafka侦听器方法中发生异常时不提交偏移量,java,spring-boot,apache-kafka,kafka-consumer-api,spring-kafka,Java,Spring Boot,Apache Kafka,Kafka Consumer Api,Spring Kafka,我有一个kafka消费者应用程序,其中listener方法中使用@Kafkalistener注释。我已经提供了主题名和容器作为此注释的输入。此方法具有Message类型的参数和acknowledge类型的参数。此方法侦听任何kafka消息,一旦接收到,就对其进行处理并存储在数据库中。在此之后,我使用acknowledge.acknowledge()方法手动提交偏移量。现在,如果在此行之前发生任何异常,则不会手动提交偏移量。但是,我看到容器属性ackOnError默认设置为true。我希望获得相同

我有一个kafka消费者应用程序,其中listener方法中使用@Kafkalistener注释。我已经提供了主题名和容器作为此注释的输入。此方法具有Message类型的参数和acknowledge类型的参数。此方法侦听任何kafka消息,一旦接收到,就对其进行处理并存储在数据库中。在此之后,我使用acknowledge.acknowledge()方法手动提交偏移量。现在,如果在此行之前发生任何异常,则不会手动提交偏移量。但是,我看到容器属性ackOnError默认设置为true。我希望获得相同的消息并对其进行处理,直到成功为止,并且不希望向前移动指针,如果向前移动,可能会导致消息丢失。为此,我计划采取以下方法

1) 侦听器类将实现ConsumerSekAware接口。ThreadLocal实例将引用ConsumerSekCallback,并使用此方法为处理失败的同一消息调用seek方法

2) 将“最大轮询记录数”设置为1


请帮助我决定这是否是正确的方法。我使用的不是SpringKafka2.x,而是1.2.x。此外,目前我已将auto.commit.offset属性设置为false,并将ackMode设置为manual。

1.2.x不再受支持;您应该尽快升级到至少1.3.10;由于KIP-62,它的线程模型简单得多

目前的版本是2.3.0


2.0.1引入了
SeektocurInterrorHandler
正是为了实现这一目的。

对不起,1.3.10是最新的1.3.x版本。