Kafka 是具有依赖项的消息的正确解决方案吗?



我们有依赖的消息.例如,假设我们有4条消息M1,M2,M1_update1,(应该只在处理M1后处理(,M3(应该只在M1,M2被处理后处理(。

在此示例中,只能并行处理 M1 和 M2,其他必须按顺序处理。我知道 Kafka 主题的一个分区中的消息是按顺序处理的。但是我怎么知道 M1,M2 已处理,现在是将 M1_update1 和 M3 消息推送到主题的时候了?Kafka 是这种用例的正确选择吗?任何见解都值得赞赏!!

Kafka 用作发布-订阅消息传递系统,具有高度可扩展性和容错性。

我相信当你的消息相互依赖时单独使用 kafka 可能是一个糟糕的选择。您需要的处理是基于条件的,您可能需要一个路由引擎,如骆驼或流口水来实现最终结果。

您基本上是在描述一个保证排序的消息队列。 根据设计,Kafka保证排序,除非在你提到的情况下,主题只有一个分区。 但是,在这种情况下,您没有充分利用 Kafka 通过并行化分区中的数据来最大化吞吐量的能力。

就消息相互依赖而言,这将需要一个核心Kafka本身不提供的逻辑层。 如果我理解正确,并且处理发生在从 Kafka 消费消息之后,您将需要在消费者端发出某种通知,它将接收和处理M1M2,并以某种方式通知另一端的生产者现在可以发送M1_updateM3。 这绝对超出了 Kafka 核心提供的范围。 你仍然可以使用 Kafka 来构建这样的东西,但可能还有其他解决方案更适合你。

相关内容

最新更新