tree: 20cd7a4e274b9037a15890af74a5a9d431613f96 [path history] [tgz]
  1. src/
  2. pom.xml
  3. README.MD
saga/local-saga-sample/README.MD

Seata Saga 模式 demo 工程

Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。

demo 说明

基于 Seata Saga模式,演示分布式事务的提交和回滚;

本demo中一个分布式事务内会有2个Saga事务参与者,分别是: InventoryActionBalanceAction ;分布式事务提交则两者均提交,分布式事务回滚则两者均回滚;

这2个Saga参与者均是 本地bean(非远程RPC服务),两个参与都有一个reduce方法,表示库存扣减或余额扣减,还有一个compensateReduce方法,表示补偿扣减操作。

  • InventoryAction 接口定义如下:
public interface InventoryAction {

    /**
     * reduce
     * @param businessKey
     * @param amount
     * @param params
     * @return
     */
    boolean reduce(String businessKey, BigDecimal amount, Map<String, Object> params);

    /**
     * compensateReduce
     * @param businessKey
     * @param params
     * @return
     */
    boolean compensateReduce(String businessKey, Map<String, Object> params);
}

demo 运行指南

step 1 启动 SEATA Server

运行 SeataServerStarter ,启动 Seata Server;

step 2 启动 Saga Demo

运行 LocalSagaTransactionStarter , 启动 demo工程;

内含Saga 事务提交场景和Saga事务回滚场景的演示;