【问题标题】:How kafka decides the number of records to poll?kafka 如何决定要轮询的记录数?
【发布时间】:2021-04-29 05:54:36
【问题描述】:

我有一个 kafka 侦听器应用程序,它基本上是在使用列表中的消息,例如:-

public void consumeUniversalMetric(List<SomeClass> someClassList) {
//Do some processing
}

假设spring.kafka.consumer.max-poll-records=5

  1. 如果消息数量少于 5 条会怎样?
  2. kafka 在创建大小为 5 的批次之前等待多长时间?

【问题讨论】:

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


    【解决方案1】:

    如果 Kafka 在 5000 毫秒内收到少于 5 条消息,它将默认使用 pollTimeout5000 毫秒。

    传入 Consumer.poll() 的超时时间。

    来自https://docs.spring.io/spring-kafka/reference/html/

    如果您想使用 Spring + Kafka 配置它,请在您的 application.yml 文件中使用

    spring:
      kafka:
        consumer:
          properties:
            max.poll.interval.ms: 300000
    

    【讨论】:

    • max.poll.interval.ms 还是fetch.max.wait 属性定义了在消费下一批消息之前要等待多长时间?
    【解决方案2】:

    控制这一点的两个消费者属性是fetch.max.waitfetch.min.bytes - 没有fetch.min.records 属性,因此您必须估计最小记录数(如果您想在少于5 条时等待)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2017-09-22
      • 1970-01-01
      • 2020-05-30
      • 2019-10-25
      • 2019-11-15
      • 2023-01-13
      相关资源
      最近更新 更多