本文共 789 字,大约阅读时间需要 2 分钟。
数据库的初始情况:
seata_order.t_order:
seata_storage.t_storage: 1号商品总数100,0个售出,实存100.
seata_account.t_account: 1号用总金额1000,使用0,余额1000.
启动nacos、sentinel、seata以及2001、2002、2003微服务 :
localhost:2001/order/create?userId=1&productId=1&count=10&money=100
AccountServiceImpl添加超时:
再次访问:localhost:2001/order/create?userId=1&productId=1&count=10&money=100
查看数据库:
订单表:插入了数据,但是因为accountService报错,所以status未修改
总结:当库存和账户金额扣减后,订单状态没有设置为已经完成,没有从0改为1,而且由于feign的重试机制,账户余额还有可能被多次扣减。
在OrderServiceImpl上添加@GlobalTransactional
再次访问:localhost:2001/order/create?userId=1&productId=1&count=10&money=100
订单表:未插入数据
转载地址:http://kvpqb.baihongyu.com/