如何知道java kafka应用程序客户端是否达到max.poll.interval.ms?
当到达kafka如何知道java kafka应用程序客户端是否达到max.poll.interval.ms?,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,当到达kafkamax.poll.interval.ms并发生重新平衡时,是否在某个地方引发异常 一旦您的消费者因长时间poll()被逐出消费者组,您将收到CommitFailedException。根据报告: 消费者也可能遇到“活锁” 它继续发送心跳,但没有进展的情况 正在制作。以防止消费者抓住其 在这种情况下,我们提供了活动性检测 使用max.poll.interval.ms设置的机制。基本上如果你 至少不要像配置的最大间隔那样频繁地调用poll, 然后,客户将主动离开该组,以便另一个 使用
max.poll.interval.ms并发生重新平衡时,是否在某个地方引发异常 一旦您的消费者因长时间poll()
被逐出消费者组,您将收到CommitFailedException
。根据报告:
消费者也可能遇到“活锁”
它继续发送心跳,但没有进展的情况
正在制作。以防止消费者抓住其
在这种情况下,我们提供了活动性检测
使用max.poll.interval.ms
设置的机制。基本上如果你
至少不要像配置的最大间隔那样频繁地调用poll,
然后,客户将主动离开该组,以便另一个
使用者可以接管其分区。当这种情况发生时,您可能会看到
偏移提交失败(如CommitFailedException
调用commitSync()
)时抛出。这是一种安全机制
保证只有组的活动成员才能提交
补偿。因此,要留在群中,您必须继续呼叫poll
因此,您可能会捕获到CommitFailedException
。实际上,您可以继续调用poll()
,直到重新平衡完成,您的消费者重新进入消费者组。您可能会在更早的时候在心跳线程中遇到异常,类似于“心跳线程因意外错误而失败:…”@mazaneicha我想这取决于配置。我认为,不管如果某个消费者被赶出该组,但继续发送心跳,则该消费者将获得例外。对不轮询的谴责:)@mazaneicha如果说心跳.interval.ms
和会话.timeout.ms
都相当大会怎么样?我的意思是,CommitFailedException
会出现。那将是一个真正的耻辱:)因为心跳也被用来向消费者传达群体再平衡。但你是对的,理论上是可行的。