在事件驱动的体系结构中处理多事件依赖性

时间:2016-06-15 08:28:15

标签: publish-subscribe microservices event-driven

如果您拥有事件驱动的体系结构并且订阅事件的服务必须等待多个事件(相同类型)才能继续创建链中的下一个事件,那么最佳做法是什么?

一个例子是图书订单处理服务,在创建订单已被选中的事件之前,必须等待订单中的每本图书由仓库处理,以便运送服务(或类似的东西)选择订单并开始准备运输。

2 个答案:

答案 0 :(得分:13)

Tom提到的聚合器旁边的另一个有用模式是a saga pattern(一个迷你工作流程)。 我之前使用它来使用名为NServiceBus的消息传递库来处理相互关联的多条消息。

该模式非常有用,非常适合长时间运行的进程。即使您的相关消息是不同的消息,例如OrderStarted,OrderLineProcessed,OrderCompleted。

答案 1 :(得分:6)

您可以使用Aggregator模式,也称为 Parallel Convoy

基本上,您需要有一些方法来识别需要聚合的消息,以及何时收集整个聚合集,以便可以开始处理。

没有外出和buying the book *,Apache Camel集成平台网站有一些nice resource来实现聚合器模式。虽然这显然是Camel特有的,但你可以看到涉及到什么样的东西。

*免责声明,我与Adison Wesley或本书的任何作者都没有任何关联......