【问题标题】:Kafka Auto-Commit doesn't effect for slower transactionsKafka Auto-Commit 对较慢的事务不起作用
【发布时间】:2020-05-09 08:38:10
【问题描述】:

使用 Spring Boot Kafka - v 2.2.1.RELEASE(使用 kafka-clients.jar v 2.3.1)

我正在为我的 Kafka Broker 使用 Confluent v 5.1.2。

我已启用自动提交为 true 和每 3 秒自动提交间隔。

我有一个基于 spring 的侦听器类 (@KafkaListener),每个消息处理大约需要 6-7 秒,因为它是一个资源密集型操作。

我在这里注意到的是偏移量永远不会由侦听器提交,并且延迟永久保持为“550”。

正因为如此(我认为),消息被监听者无限期地处理。

当我将监听器更改为手动提交偏移量时,它工作正常。

在涉及长时间运行的事务的情况下,为什么自动提交不起作用?

是否缺少任何设置或设置的数字太小/太大?我想知道对于这种长时间运行的事务的推荐策略是什么。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    自动提交在消费者线程上运行,因此auto.commit.interval.ms 应被视为最低要求 - 实际提交要到下一次轮询才会发生。

    但是,Spring 建议不要使用自动提交并让容器执行提交(例如使用AckMode.RECORD);它更具确定性和可靠性。

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 2018-08-30
      • 2023-01-15
      • 2021-01-13
      • 1970-01-01
      • 2017-05-11
      • 2014-12-12
      • 2022-10-20
      相关资源
      最近更新 更多