我是卡夫卡的初学者,试图理解一个假设的案例。如果我有
具有使用者C1的分区P1(使用者grp cg1(=将偏移量提交为30
以及具有使用者C2的分区P2(使用者grp cg1(=将偏移量提交为40
现在重新平衡发生了,我希望我的消费者组在那里向新分区提交偏移,比如:
具有使用者C2的分区P1(使用者grp cg1(=将偏移量提交为40
P2与使用者C1(使用者grp cg1(=提交偏移量为30
如何实现这一点?我可以在这里使用ConsumerReblancerListener吗?或者有其他方法吗?
感谢
消费者"C1〃;以及";C2";与偏移值没有关系。更具体地说,任务的顺序没有保证,因此按编号引用它们是不清楚的。
当团队重新平衡时,你就会陷入团队为这些补偿所承诺的任何补偿。分区高水印是唯一的。如果分区1具有偏移量40,则不能保证分区2具有偏移量。
您必须手动跟踪";消费者名称/ID";在Kafka之外,然后使用seek
方法让特定的消费者在分区分配发生后以特定的偏移量启动。
理想情况下,你不要这样设计你的消费者。您将把分区2倒带10个偏移量,然后重新处理这些数据。同时,跳过分区1的10个偏移(可能还不存在(。。。