Axon和Spring Boot实现Saga源码

21-07-08 banq

这个博客是如何使用 Axon 和 Spring Boot 实现 Saga。Saga 是一个强大的概念,但是,您需要在实现 Saga 之前考虑其他选项。你必须记住,Saga 应该只编排这个过程。业务逻辑应保存在聚合中。Saga 的使用意味着更多的数据库流量和 CPU 能力用于序列化和反序列化实例。Saga 使用数据库中的多个表来存储和检索其状态。如果您不需要它,我建议您改用无状态事件处理程序。 

如果您认为 Saga 是最佳选择,那么此博客提供了一些好的做法来帮助您入门。

 

Webshop Saga 示例用例

让我们从介绍用例开始:

网店有不同的有界上下文,例如,结帐(客户可以向卡中添加商品)、订单、发货、付款上下文。结帐上下文将根据客户在结帐中执行的操作生成事件。其中一些事件是所谓的领域事件。这些事件可能会触发其他上下文中的操作。OrderConfirmedEvent 就是一个例子。当订单确认后,订单处理开始:客户付款,订购的商品需要发货。这个过程的管理是至关重要的。客户取消付款后,应采取取消发货等补偿措施。

可以在代码示例存储库中找到完整的实现。

Saga 负责多个有界上下文之间的过程。存在三个有界上下文:

  1. 订购
  2. 支付
  3. 运输

详细点击标题

 

1
猜你喜欢