悬浮骆驼Kafka消费者

时间:2020-02-25 10:46:39

标签: apache-kafka apache-camel

我的应用程序正在运行N个实例。实例数始终大于Kafka分区数。例如。消费者组的6个实例,从4个Kafka分区中消费...因此,在任何时候,只有4个实例实际上在消费。

在这种情况下我可以在不导致Kafka尝试与其他潜在消费者重新平衡的情况下暂停Kafka消费者Camel路线吗?我的理解是,暂停的路由将停止轮询,从而导致另一个承担负载。

1 个答案:

答案 0 :(得分:1)

这不是骆驼,而是卡夫卡问题。 再平衡由Kafka处理,并在消费者明确离开消费者组或静默死亡时触发(不再发送心跳信号)。

Kafka 2.3引入了一个名为“ Static Membership”的新功能,以避免由于使用者重启而造成的重新平衡。

但是在您的情况下(另一个消费者必须承担离开消费者的负担),我认为由于所使用的协议, Kafka必须触发所有消费者的再平衡

另请参阅this article,以深入了解重新平衡及其在可用性和容错之间的权衡。

由于评论而编辑

如果要避免重新平衡,我认为您必须同时增加WHERE MOD(MINUTE("2020-02-28 08:45:00"),5)=0 (心跳间隔)和session.timeout.ms(处理超时)。

但是,即使您将它们设置得很高,我想它也无法可靠地工作,因为路由暂停可能仍会在心跳之前发生(仅是错误的计时)。

有关max.poll.interval.mssession.timeout.ms之间的区别,请参见this q&a