34、基于Axon的Saga示例:电商订单处理

基于Axon的Saga示例:电商订单处理

在分布式系统中,Saga模式是处理长事务的有效方式。本文将通过一个电商应用的示例,详细介绍如何使用Axon框架实现Saga。

1. 示例概述

我们的示例是一个电商应用的一部分,涉及两个实体:订单(Order)和产品(Product)。用户可以购买产品,这将创建一个新订单。新订单创建时,订单状态为“New”,同时产品库存会减少。此外,新订单的创建还会在审计表中记录一条记录。

2. 设计示例Saga场景

该示例有五个微服务,其中Event Handle Core微服务和Event Handler Audit微服务的事件处理器都订阅了订单创建事件,Handle Command and Create Event微服务中的OrderProcessSaga也对该事件感兴趣。

2.1 新订单创建流程

当用户在浏览器中点击“Order One Now!”按钮时,整个系统的命令和事件流如下:
1. 浏览器发送REST/JSON请求到订单控制器。
2. Create Command Rest Controller微服务中的订单控制器将请求解释为写请求,创建新订单命令并发送到命令网关,命令网关再将命令分发到分布式命令总线。
3. 分布式命令总线连接不同JVM中的命令总线,每个JVM上的分布式命令总线称为一个段。
4. 命令总线接收命令并路由到Handle Command and Create Event微服务中的订单命令处理器。
5. 订单命令处理器获取相应产品并减少库存。
6. 产品库存减少后,更新产品实体并持久化到写数据库。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值