【问题标题】:Sarama Partition Consumer with ConsumerGroup使用 ConsumerGroup 的 Sarama 分区消费者
【发布时间】:2020-01-03 12:07:43
【问题描述】:

我已尝试使用 shopify/sarama 库来使用 kafka 消息。我同时使用了Consumer 接口和ConsumerGroup 接口。我可以使用Consumer 中的ConsumePartition() 方法从特定分区中消费。但是当我使用ConsumerGroup 接口时,我似乎没有能力从特定分区消费。

有没有办法让我将某些分区分配给消费者组中的特定消费者?还是我不能干涉?

【问题讨论】:

  • 尝试使用KafkaConsumer的assign()方法。您可以使用它分配一个特定的分区。
  • @fatemasagar assign() 方法在confluent kafka 库中,对吧? sarama库中没有这种方法。
  • 是的,Dean,你说得对。很抱歉这个答案。
  • Java API 允许在消费者组内进行分配。如果没有sarama,我会感到惊讶
  • 这对我来说也很奇怪...不太了解 sarama 但这可能对你有好处stackoverflow.com/questions/44279935/…

标签: go apache-kafka sarama


【解决方案1】:

在使用ConsumerGroup 时,我似乎无法给出确切的分区来使用。但是,我可以从 2 个策略选项中选择我想为消费者分配分区的策略。

  1. 平衡策略范围

BalanceStrategyRange 是默认设置,将分区作为范围分配给消费者组成员。 一个主题 T 有六个分区 (0..5) 和两个成员 (M1, M2) 的示例:

M1: {T: [0, 1, 2]}
M2: {T: [3, 4, 5]}
  1. 平衡策略循环

BalanceStrategyRoundRobin 以交替的顺序将分区分配给成员。 具有六个分区 (0..5) 和两个成员 (M1, M2) 的主题 T 的示例:

M1: {T: [0, 2, 4]}
M2: {T: [1, 3, 5]}

我可以在创建 ConsumerGroup 时将其作为配置提供。

config.Consumer.Group.Rebalance.Strategy = BalanceStrategyRange

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多