重新分配来自kafka分区的邮件,该分区要处理的邮件比其他分区多

时间:2019-10-01 03:31:28

标签: java apache-kafka

TL; DR:我有很多消费者在讨论Kafka主题。一段时间后,大多数操作已完成,只有少数几个继续工作。如何重新分配工作,使所有消费者忙碌?

详细说明:

我有一个Kafka主题,上面有数十万条消息。关于主题的消息具有空键,因此,开始时,数据将均匀分布在所有主题分区中。正在从该主题中读取消息的使用者组中的每个使用者一次读取一条消息(批量大小为1),并且该使用者仅花费1分钟到10分钟以上的任何时间来处理它所读取的一条消息。因此,我在消费者组中扩展了600个消费者实例,处理了600个主题分区中的这些消息。经过一段时间后,由于使用者的处理时间因消息而异(1分钟-10+分钟),因此最终许多使用者会完成对分配给他们的分区上所有消息的处理,而只有少数几个消费者(例如600个中的50个)还有1000余条消息需要处理。这意味着现在600名消费者中有550名无所事事。考虑到消息具有空键,在这种情况下哪个使用者获取消息或以什么顺序对我来说都没有关系,有没有办法我可以在过程中的所有分区之间重新平衡消息,以便在选择少数消费者落后,还有更多消息需要处理?

0 个答案:

没有答案