Kafka:主题内的消息路由

时间:2018-02-08 18:25:37

标签: apache-kafka

我正在将Kafka集成到我们的系统中,我们有一个中心组件,它将相同类型的事件发布到特定主题。在消费者方面,我们有多个“项目”,这些项目对该主题中仅与其相关的事件感兴趣。有没有办法只向那些消费者提供相关事件

  1. 为每个项目创建使用者组,并忽略应用程序级别上其他项目的事件。
  2. 为每个项目创建单独的主题
  3. 这可能是菜鸟问题:/ 提前致谢

2 个答案:

答案 0 :(得分:2)

您列出的2个选项可以使用,但这可以让您更改输入和输出客户端的工作方式。

另一种方法是使用Kafka Stream从输入主题中读取所有消息,并将每个消息发送到所需的输出主题。这样生产方保持不变,消费者只接收他们关心的消息。

查看KStream.branch()转化。

答案 1 :(得分:1)

根据您的使用案例,我认为根据您的'项目进行分区。在这种情况下,在消费者方面可能有帮助。中央制作人可以推送相关分区中的相同主题供消费者使用。

在消费者级别,您需要将所有使用者保留在一个使用者组下,并指定相应使用者将使用哪个分区。这种方法会产生一个负面影响 - 当我们手动将每个消费者映射到每个分区时,Kafka会自动处理负载平衡。