使用并发时如何使用ConsumerAwareErrorHandler提交偏移量?

时间:2019-01-02 11:34:18

标签: apache-kafka kafka-consumer-api spring-kafka

在发生错误的情况下,ConsumerAwareErrorHandler接口在handle方法中提供对ConsumerRecord和Consumer的引用。现在,在处理完错误之后,我们可以提交偏移量或忽略。但是我想知道,当我们使用多个线程(ConcurrentKafkaListenerContainerFactory.setConcurrency)时,它将如何表现。如果由于不同的原因而导致最新记录在前一个记录之前出错,并且我们提交了最新记录的偏移量,但是前一个记录因致命错误而失败,那么我们实际上不应该提交任何偏移量。

我将AckMode.COUNT与!ackOnError结合使用

1 个答案:

答案 0 :(得分:0)

使用并发时,每个分区都分配给特定的使用者/线程,因此不可能有另一个线程正在处理来自同一分区的记录。

分区分布在线程中。