Kafka 消费者 - 如果一个消费者失败,重新平衡如何工作

Kafka consumer - how does rebalance work if one consumer fails

我正在使用 AWS Kafka MSK,我有一个包含 2 个分区的主题。 我也有 2 个消费者,它们属于同一消费者组。

我想知道在以下情况下会发生这种情况:

消费者 A - 接收了消息 1 - 100
消费者 B - 接收了消息 101 - 200

消费者 A 失败
消费者 B 成功

消息 1 - 100 会怎样?

auto Kafka rebalance 会设置消费者 B 读取消息 1 - 100 吗? 或者将代替消费者 A 启动的新消费者将读取消息?

提前致谢。

偏移量范围适用于分区,而非主题。

除非满足以下条件之一,否则这种情况对于新鲜的消费者应用程序是不可能的

  • 分配给消费者 B 的分区的偏移量 0-100 由于保留已被删除
  • 您的代码调用 seek 方法来跳过这些偏移量

另一方面,如果消费者组已经存在并消费了分配给消费者A的分区记录的none(比如说,它之前失败过),并且提交了另一个分区的偏移量100 .在这种情况下,也许会发生同样的事情;消费者组可能无法读取“第一个”分区的偏移量 0。

当任何消费者实例失败时,该组将重新平衡。根据您处理 errors/failures 的方式,之前健康的实例可能会被分配到两个分区,然后再次使用“第一个”分区失败(因为它将是之前死亡的相同代码)。或者,以不同的方式编写代码,您将忽略消费者异常并有选择地在 dead-letter 队列中标记错误的偏移量。记录或忽略时,您将为原始消费者提交偏移量并跳过这些记录。