0

我们在 SOA 应用程序中有以下场景。ServiceA 产生一些需要由 ServiceB 的实例异步处理的作业。本质上,这转化为一个工作队列问题,其中每个工作人员都是 ServiceB 的一个实例。我们使用 Kafka 作为消息代理并具有以下设置。

5 经纪人 B1、B2、B3、B4 和 B5。有一个 topic(A) 有 10 个分区 (P1,P2,....P10),每个分区的复制因子为 3。假设分区分配如下 P(i) 有 B(i) 作为领导者,并且B(i+1) 和 B(i+2) 作为副本。

有 3 个 ServiceB 实例正在运行。有了这个设置,我们应该如何使用 High Level Consumer API 来实现 C1 从 3 个分区消费的消费模型;C2 来自 3 个分区;来自剩余 4 个分区的 C3

4

1 回答 1

1

您无法使用高级消费者将事情控制到这个级别。

如果消费者 C1、C2 和 C3 属于同一消费者组(即具有相同的 group.id),则高级消费者将尝试平衡它们之间的分区。您最终应该有 2 个消费者,每个消费者从 2 个分区消费,一个从 4 个分区读取。但是,您无法控制细节。

如果您需要更多地控制哪个消费者获得哪些分区数量,您需要使用简单的消费者 API 自己完成。

于 2014-11-28T18:33:48.230 回答