我正在将Kafka集成到我们的系统中,我们有一个中心组件,它将相同类型的事件发布到特定主题。在消费者方面,我们有多个“项目”,这些项目对该主题中仅与其相关的事件感兴趣。有没有办法只向那些消费者提供相关事件
这可能是菜鸟问题:/ 提前致谢
答案 0 :(得分:2)
您列出的2个选项可以使用,但这可以让您更改输入和输出客户端的工作方式。
另一种方法是使用Kafka Stream从输入主题中读取所有消息,并将每个消息发送到所需的输出主题。这样生产方保持不变,消费者只接收他们关心的消息。
查看KStream.branch()转化。
答案 1 :(得分:1)
根据您的使用案例,我认为根据您的'项目进行分区。在这种情况下,在消费者方面可能有帮助。中央制作人可以推送相关分区中的相同主题供消费者使用。
在消费者级别,您需要将所有使用者保留在一个使用者组下,并指定相应使用者将使用哪个分区。这种方法会产生一个负面影响 - 当我们手动将每个消费者映射到每个分区时,Kafka会自动处理负载平衡。