Scenario
- 同一消费者组内有 10 个 kafka 消费者。
- Kafka 有 10 个分区 => 这意味着每个分区都会自动分配给组内的单个消费者。
- 消息以循环方式发送到分区。
- 有时,一条消息的处理时间会比其他消息长得多。
- 在这种情况下,下一条消息可能会被分配给仍在忙于工作的消费者,而还有其他空闲消费者
Question
- Kafka是否支持自动向消费者空闲的分区发送消息的机制?
- 如果没有,这种情况的常见方法是什么?
虽然你可以实现一个custom Assignor class https://kafka.apache.org/31/javadoc/org/apache/kafka/clients/consumer/ConsumerPartitionAssignor.html,默认情况下,仅根据分配消耗,不根据负载消耗;此类信息不会反馈给小组协调员。另外,根据负载不断调整可能会导致频繁的组重新平衡,从而导致消耗甚至更慢
关于处理长度,我不知道您的消费者能够在分区分配和轮询此类记录之前检查消息的任何方式。因此,如果您想缩短处理时间,则需要将处理逻辑与实际的轮询循环分离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)