根据 Kafka 文档;
新的 Java Consumer 现在支持来自后台线程的心跳。有一个新的配置 max.poll.interval.ms 控制在消费者主动离开组之前轮询调用之间的最长时间(默认为 5 分钟)。配置 request.timeout.ms 的值必须始终大于 max.poll.interval.ms 因为这是消费者重新平衡时 JoinGroup 请求可以在服务器上阻塞的最长时间,所以我们更改了它的默认值到刚刚超过 5 分钟。
但我无法理解使 max.poll.interval.ms 大于 request.timeout.ms 的可能结果。
任何人都可以解释这部分文件:
因为这是消费者重新平衡时 JoinGroup 请求可以在服务器上阻塞的最长时间
现在我在我的项目中使用这些消费者参数:
kafka.consumer.session.timeout.ms=30000
kafka.consumer.heartbeat.interval.ms=10000
kafka.consumer.request.timeout.ms=31000
kafka.consumer.max.poll.interval.ms=259200000
kafka.consumer.max.partition.fetch.bytes=10242880
这些使用会有什么负面影响?
注意:我的 kafka-clients 版本是 1.1.0
更新
从 Kafka 版本 2.0.0 开始,此规则不再有效。来自 Kafka 文档 2.0.0 中的显着变化:
同样作为 KIP-266 的一部分,request.timeout.ms 的默认值已更改为 30 秒。之前的值略高于 5 分钟,以说明重新平衡所需的最长时间。现在我们将重新平衡中的 JoinGroup 请求视为一种特殊情况,并使用从 max.poll.interval.ms 派生的值作为请求超时。所有其他请求类型使用 request.timeout.ms 定义的超时
侃侃尔雅
相关分类