【发布时间】:2014-02-13 03:51:27
【问题描述】:
如果我运行的 Kafka 集群的分区数多于我的唯一消费者组的消费者数。对消息的排序或跨分区的消息按时传递是否有任何保证?
简单示例:
2 个分区,1 个消费者
生产者通过一个键控制分区分配。
消息 1 进入并转到分区 A
消息 2 进来并转到分区 B
消息 3 进来并转到分区 A
我知道消息 1 将在消息 3 之前被使用,因为它们在同一个分区中。但是消息 2 呢?它会在消息 3 之前或之后被消耗吗?还是会有所不同?有没有可能在消息 1 之前被消费?
此外,如果分区 A 不断有新的 Messages 进来,并且生产比消费快怎么办?消息 2 会无限期地位于分区 B 中吗?什么时候消费?是否可以保证消息不会永远存在?
更一般地说: 如果消费者被分配到多个分区,该消费者如何以及何时在这些分区之间进行交换?
【问题讨论】:
-
您的问题的答案在很大程度上取决于您使用的消费者实现。 Kafka 对消费者如何从多个分区进行消费没有任何限制。例如,来自不同语言的不同消费者实现可能会有不同的行为。
标签: apache-kafka