如果代理在配置属性session.timeout.ms
到期之前未收到任何心跳信号,则Kafka将其从消费者组中删除。
让我们假设,为了让消费者在处理从主题接收的消息时花费时间,我们将session.timeout.ms
配置为一个很高的值-足够高以允许消费者处理负载,足以检测到潜在的故障。
我的主要问题是,为什么Kafka不产生新的使用者,而该使用者会尝试从故障中恢复(如果有的话,也许该使用者只需要更多时间),而不是将使用者从组中删除,然后将其分区重新分配给其余使用者消费者(发起重新平衡)。
被认为死掉的消费者所发生的事情很可能会发生在该组中的其余消费者身上,从而导致一个空的消费群体,这将意味着该主题消费的结束。
这是我在部署session.timeout.ms
并根据使用者线程花费的时间来调整以适应来自代理的负载而进行的部署时发生的。
有关该主题的更多信息:
是否存在一些我不知道的恢复机制,或者是故意设计的?
当将使用者线程标记为死线程时,代理是否可能会产生某种异常,我可以使用该异常来自己生成恢复线程?
//编辑 使用spring-integration-kafka 2.1.0和spring-kafka 1.1.0和Kafka经纪人0.11.0.3的依赖关系