根据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
答案 0 :(得分:0)
request.timeout.ms
指定使用者将等待经纪人响应的时间。
max.poll.interval.ms
用于几个用例。它首先指定了消费者与经纪人进行交互的频率(以确认其是否还活着),但是当消费者加入一个群组时也使用该行为。在这种情况下,它指示代理可以花多长时间来响应加入组请求。
因此,如果max.poll.interval.ms
大于request.timeout.ms
,您会发现经纪人的响应时间可能比消费者等待的时间长。这样消费者可以使请求超时。
在许多情况下,这两种配置的默认值都比较好。与其将它们覆盖为我在问题中看到的较大值,不如首先应该清楚地确定要更改默认行为的方式。