请教, kafka 如何做到一个 topic 分发不同的类型的消息

查看 58|回复 4
作者:NoKey   
场景是这样的,上游服务 A ,通过 kafka 发消息个下游服务 B,C,D
为了后续集成方便,A 使用了一个 Topic
这个时候,需要 BCD 接收自己的消息
这种场景下,如何才能控制 BCD 只收到自己的消息,不收别人的消息呢?
考虑了几种方式:
1. 通过 key 。这样下游服务只有收到消息之后才知道 key 是啥,不是自己的丢弃,但是这样必须收消息,也就是 B 会收到 C ,D 的消息,感觉不好。
2. 通过分区。不同下游的消息放到不同的分区,但是这样会造成分区不均衡,部分分区过大。
请问一下大家有没有更好的办法呢?谢谢

分区, 消息, Kafka, bcd

antipro   
给 B ,C ,D 各建一个 Kafka
aijam   
1F +1
cloudzhou   
给 B ,C ,D 各建一个 Topic 就可以
dddd1919   
如果只让 BCD 接收到自己的消息,那就在 push 时分三个 topic ,直接把消息隔离开,缺点就是负载可能不均服务利用率降低
如果只让 BCD 处理自己要的消息并忽略掉无意义消息,可以在各自 consumer 加 filterStrategy 过滤掉无关消息
您需要登录后才可以回帖 登录 | 立即注册

返回顶部