消费者失败时的 Kafka 行为

Kafka behaviour if consumer fail

我查阅了很多关于 Apache Kafka 事务、恢复和 exactly-once 新特性的不同文章。仍然不了解消费者恢复的问题。如何确保即使其中一个消费者死亡,来自队列的每条消息都会被处理?

假设我们有一个分配给消费者的主题分区。消费者轮询一条消息并开始处理它。并因未提交而因断电而关闭。会发生什么?来自同一组的任何其他消费者是否会回复此消息?

消费者定期发送心跳,告诉代理他们还活着。如果代理没有收到来自消费者的心跳,它认为消费者已经死了并重新分配它的分区。因此,如果消费者死亡,其分区将分配给组中的另一个消费者,未提交的消息将发送给新分配的消费者。