网站建设资讯

NEWS

网站建设资讯

Springcloud中的分布式事务怎么利用seata实现-创新互联

Springcloud中的分布式事务怎么利用seata实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联建站服务紧随时代发展步伐,进行技术革新和技术进步,经过十年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都网站设计、成都网站建设、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

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

大致上seata分为TC,TM,RM三大构建成整体。它们之间的包含关系如下。即一(xid主键编码,记录信息)带三(TC,TM,RM)

Springcloud中的分布式事务怎么利用seata实现

下面之间构建项目进行测试。

1.下载seata并解压,然后改动配置文件。

http://seata.io/zh-cn/blog/download.html官网下载。

解压之后到conf中修改file和registry文件,修改之前一定记得先备份。

file.conf,改动两个地方

将group后面的参数定义一个名字,随意

Springcloud中的分布式事务怎么利用seata实现

存储方式选db放在数据库,自然其配置信息根据自己的数据库去填写。

Springcloud中的分布式事务怎么利用seata实现

然后是register文件,填写信息将seata注册到nacos中。

Springcloud中的分布式事务怎么利用seata实现

启动自然是在bin中打开bat文件即可,注意需要先启动naco。

2.构建项目(order,storage,account)

演示整体的服务调用还有服务报错的时候进入回滚。通过创建订单->检查库存并扣除->检查账户并扣除->修改订单状态

具体代码可查看GitHub

https://github.com/MaTsukun/springcloud2020

关键的service方法

@Service
@Slf4j
public class OrderServiceImpl implements OrderService{
  @Resource
  private OrderMapper orderMapper;
  @Resource
  private StorageService storageService;
  @Resource
  private AccountService accountService;

  @Override
  @GlobalTransactional(name="abc-create-order",rollbackFor = Exception.class)
  public void create(Order order){
    //1.创建订单
    log.info("开始创建订单");
    orderMapper.create(order);
    //2.减少库存
    log.info("查询库存并且进行更改");
    storageService.decrease(order.getProductId(),order.getCount());
    //3.扣除费用
    log.info("查询余额并扣除费用");
    accountService.updateAccount(order.getUserId(),order.getMoney());
    //4.修改状态
    log.info("更改订单状态");
    orderMapper.update(order.getUserId(),0);
    log.info("订单结束,O(∩_∩)O哈哈~");
  }
}

当前文章:Springcloud中的分布式事务怎么利用seata实现-创新互联
本文地址:http://cdweb.net/article/djphoe.html