我有一个由多个消费者(同一组)使用的多分区主题。我的目标是最大化消费处理,即任何消费者都可以消费来自任何分区的消息。
我知道这看起来不可能,因为只有一个消费者可以从分区中消费。
是否可以使用 REST 代理来实现这一点?例如,轮询所有 Proxy 消费者实例。
谢谢。
我有一个由多个消费者(同一组)使用的多分区主题。我的目标是最大化消费处理,即任何消费者都可以消费来自任何分区的消息。
我知道这看起来不可能,因为只有一个消费者可以从分区中消费。
是否可以使用 REST 代理来实现这一点?例如,轮询所有 Proxy 消费者实例。
谢谢。
默认情况下, Kafka 消费者被配置为从尽可能多的分区中消费。如果您在同一主题上有多个同时使用的消费者,使用相同的消费者组 ID,Kafka 将自动将卷分配给所有这些消费者。这是设计使然,因此您可以通过添加更多消费者来快速扩展消费。
您可以选择指示 kafka 使用者仅从特定分区中使用,甚至包括到一个,但您必须明确地执行此操作。
最大化消费处理的最佳方法是让一个消费者(同一组)从每个分区读取。
作为改进措施,您还可以查看:
另外提醒一下,分区和消费者组只允许一个消费者,以避免并发问题。如果 2 个消费者提交不同的偏移量会发生什么?-> 您最终会阅读两次消息或跳过其中一些消息!