consumer.poll(Long.MAX_VALUE);
这是为了允许处理(高延迟)完成。保持这样高的价值有什么副作用吗?
它是否阻止正在读取的分区中的其他消息?这会对再平衡产生不利影响吗?
发布于 2020-06-01 11:03:33
对于这一点,您应该了解两种配置。
。
1.超时值:抽签方法的文档:
如果有可用的记录,则
此方法立即返回。否则,它将等待传递的超时。如果超时过期,将返回一个空记录集。
@param超时:阻塞的最大时间(不得大于{@link Long#MAX_VALUE}毫秒)
,那么如果我将这个值保持在较高的位置会怎样呢?
如果无法使用记录,则轮询方法的每一次迭代都将等待您设置的更高值。
它会对再平衡产生不利影响吗?
不,此配置与如果组中的消费者被卡夫卡消费者组管理发现死亡而触发的再平衡没有关系。
2. MAX_POLL_INTERVAL_MS_CONFIG
来自此配置的Kafka文档。
使用使用者组管理时轮询()调用之间的最大延迟。这就为使用者在获取更多记录之前空闲的时间设置了一个上限。如果在超时到期前未调用(),则认为使用者失败,该组将重新平衡,以便将分区重新分配给另一个成员。
,那么如果我将这个值保持在较高的位置会怎样呢?
有时人们知道,在一段时间内,该信息将无法用于消费。这就是应用程序的性质,主题的生产者可能不会在一定时间内产生消息。
在这种情况下,我们想停止来自卡夫卡的投票。我们知道,投票是故意停止的,消费者也没有失败。将其设置为8小时这样的高值将确保不会发生再平衡。
它会对再平衡产生不利影响吗?
是的,这个配置决定何时触发再平衡。如果将此值设置为高值,则重新平衡将推迟到此时间。
https://stackoverflow.com/questions/62111694
复制相似问题