Sarama 使用 ConsumerGroup 对 Consumer 进行分区
Sarama Partition Consumer with ConsumerGroup
我已经尝试 shopify/sarama 库来使用 kafka 消息。我同时使用了 Consumer
接口和 ConsumerGroup
接口。我可以使用 Consumer
中的 ConsumePartition()
方法从特定分区消费。但是当我使用 ConsumerGroup
界面时,我似乎没有能力从特定分区消费。
有没有办法让我将某些分区分配给消费者组中的特定消费者?还是我不能干涉?
使用 ConsumerGroup
时,我似乎无法给出要使用的确切分区。但是,我可以从 2 个策略选项中选择要为我的消费者分配分区的策略。
- 平衡策略范围
BalanceStrategyRange 是默认值,并将分区作为范围分配给消费者组成员。
一个主题 T 具有六个分区 (0..5) 和两个成员 (M1, M2) 的示例:
M1: {T: [0, 1, 2]}
M2: {T: [3, 4, 5]}
- 平衡策略轮询
BalanceStrategyRoundRobin 以交替顺序为成员分配分区。
具有六个分区 (0..5) 和两个成员 (M1, M2) 的主题 T 的示例:
M1: {T: [0, 2, 4]}
M2: {T: [1, 3, 5]}
我可以在创建 ConsumerGroup 时将其作为配置提供。
config.Consumer.Group.Rebalance.Strategy = BalanceStrategyRange
我已经尝试 shopify/sarama 库来使用 kafka 消息。我同时使用了 Consumer
接口和 ConsumerGroup
接口。我可以使用 Consumer
中的 ConsumePartition()
方法从特定分区消费。但是当我使用 ConsumerGroup
界面时,我似乎没有能力从特定分区消费。
有没有办法让我将某些分区分配给消费者组中的特定消费者?还是我不能干涉?
使用 ConsumerGroup
时,我似乎无法给出要使用的确切分区。但是,我可以从 2 个策略选项中选择要为我的消费者分配分区的策略。
- 平衡策略范围
BalanceStrategyRange 是默认值,并将分区作为范围分配给消费者组成员。 一个主题 T 具有六个分区 (0..5) 和两个成员 (M1, M2) 的示例:
M1: {T: [0, 1, 2]}
M2: {T: [3, 4, 5]}
- 平衡策略轮询
BalanceStrategyRoundRobin 以交替顺序为成员分配分区。 具有六个分区 (0..5) 和两个成员 (M1, M2) 的主题 T 的示例:
M1: {T: [0, 2, 4]}
M2: {T: [1, 3, 5]}
我可以在创建 ConsumerGroup 时将其作为配置提供。
config.Consumer.Group.Rebalance.Strategy = BalanceStrategyRange