对于具有依赖关系的消息,kafka是正确的解决方案吗?

thigvfpy  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(388)

我们有依赖的消息。假设我们有4条消息m1,m2,m1\u update1,(应该只在m1被处理之后处理),m3(应该只在m1,m2被处理之后处理)。
在这个例子中,只有m1和m2可以并行处理,其他的必须是顺序的。我知道Kafka主题的一个分区中的消息是按顺序处理的。但是我怎么知道m1,m2被处理了,现在是时候把m1\u update1和m3消息推到主题上了?对于这种用例,kafka是正确的选择吗?任何见解都将不胜感激!!

ioekq8ef

ioekq8ef1#

您基本上是在描述一个保证排序的消息队列。Kafka,从设计上来说,并不保证排序,除非在你提到的情况下,主题只有一个分区。不过,在这种情况下,您并没有充分利用kafka通过并行分区中的数据来最大化吞吐量的能力。
至于相互依赖的消息,这将需要一个核心Kafka本身没有提供的逻辑层。如果我理解正确,并且处理发生在从kafka消费消息之后,那么您将需要在消费端接收和处理某种通知 M1 以及 M2 然后通知另一边的制作人现在可以发送了 M1_update 以及 M3 . 这绝对超出了Kafka核心思想的范围。你仍然可以使用Kafka来构建这样的东西,但可能还有其他更适合你的解决方案。

guicsvcw

guicsvcw2#

kafka作为pub-sub消息传递系统,具有高度的可扩展性和容错性。
我相信,当你的信息相互依赖时,单独使用Kafka可能是一个错误的选择。您需要的处理是基于条件的,您可能需要一个路由引擎(如camel或drool)来实现最终结果。

相关问题