首页 文章

Kafka在消费者之间分配来自分区的消息

提问于
浏览
0

我有一个Kafka主题,目前有3个分区 . 我希望我的消费者从同一个分区读取,但每个消息应该以循环方式传递给不同的消费者 . 是否有可能实现这一目标?

3 回答

  • 0

    为此,您必须实现一个使用者组 . 它与Kafka开箱即用 . 您只需要为树消费者指定相同的group.id .

    [编辑]但是,每个消费者都会在不同的Kafka分区中阅读 . 我认为如果你只使用Kafka API,那么在同一个分区中读取同一组的差异消费者是不可能的 .

    请参阅文档中的更多内容:http://kafka.apache.org/documentation.html#intro_consumers

  • 0

    怎么样,在制作人的情况下,消息会根据某些键进行路由 . 可以将消息1路由到分区1,将消息2路由到分区2,将消息3路由到分区3.然后,您应该将一个组中的三个使用者分组 . 可以使消费者1消费分区1,消费者2消费分区2,消费者3消费分区3 .

    顺便说一句,如何实现它取决于您使用的是哪个kafka客户端,消息是什么 . 你应该提供更多细节....

  • 0

    你说的是否会破坏分区的目的 . 分区不是为kafka中的简单负载 balancer 而设计的 . 如果你真的想要,你有两个选择 .

    • 如果您可以控制 生产环境 者生成主题,请执行简单的mod 3散列分区 . 因此消息将在3个分区中平均分配 . 现在,每个消费者将从一个分区消费 . 这实际上意味着每个消费者都会读取每三条消息 . 这解决了你的问题 .

    • 如果无法控制 生产环境 者,请以正常方式使用主题 . 使用简单的mod 3散列分区编写一个生成器并将其生成为一个新主题 . 再次消耗该主题 . 同样的事情与第一种情况一样重复 .

相关问题