博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloudAlibaba--Seata简单案例(三)
阅读量:2443 次
发布时间:2019-05-10

本文共 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
在这里插入图片描述
订单表:
在这里插入图片描述
库存表:
在这里插入图片描述
账户:
在这里插入图片描述
正常下单成功。

超时异常,没加@GlobalTransaction

AccountServiceImpl添加超时:

在这里插入图片描述

再次访问:localhost:2001/order/create?userId=1&productId=1&count=10&money=100

在这里插入图片描述
报错,因为OpenFeign默认调用时限为1秒。

查看数据库:

订单表:插入了数据,但是因为accountService报错,所以status未修改

在这里插入图片描述
库存表:出现严重错误,下单失败商品不翼而飞…
在这里插入图片描述
账户表:出现严重错误,下单失败,但是扣钱了,钱货两空…
在这里插入图片描述

总结:当库存和账户金额扣减后,订单状态没有设置为已经完成,没有从0改为1,而且由于feign的重试机制,账户余额还有可能被多次扣减。

超时异常,添加@GlobalTransactional

在OrderServiceImpl上添加@GlobalTransactional

在这里插入图片描述

再次访问:localhost:2001/order/create?userId=1&productId=1&count=10&money=100

在这里插入图片描述
查看数据库:

订单表:未插入数据

在这里插入图片描述
库存表:未修改
在这里插入图片描述
账户表:未修改
在这里插入图片描述
结论:下单后数据库并没有任何改变,分布式事务控制成功。

转载地址:http://kvpqb.baihongyu.com/

你可能感兴趣的文章
使用PC版Zune以全新的方式体验您的音乐
查看>>
将背景图像和主题添加到Windows 7 Media Center
查看>>
微软预览word_在Microsoft Word中更轻松地选择表列
查看>>
vs设计视图和代码视图拆分_在iPad上拆分视图和滑行之间有什么区别?
查看>>
谷歌中阻止冒泡在火狐中失效_如何在Google表格中转换货币
查看>>
wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
查看>>
如何使Linux控制台更易于Linux新手使用
查看>>
谷歌浏览器开发文档获取书签_使用书签更快地浏览Word文档
查看>>
如何在Apple Watch上启用和使用缩放
查看>>
初学者:如何在Outlook 2010中向其他人分配任务
查看>>
windows 10 修复_如何修复Windows的10大烦恼
查看>>
系统映像恢复 进不了系统_如何从Windows系统映像中恢复特定文件
查看>>
如何学习Photoshop的极客指南,第2部分:面板
查看>>
如何在iPhone上将实时照片转换为视频或GIF
查看>>
xbmc_从iPhone或iPod Touch控制XBMC
查看>>
编程爱好者网站_读书爱好者的最佳免费网站
查看>>
为什么运行微波会杀死Wi-Fi连接?
查看>>
matlab生成文本乱码_如何生成完全随机/乱码文本的段落
查看>>
siri捷径调用谷歌翻译_告诉它使用Google助理,以减少Siri的麻烦
查看>>
imessage_如何在iPhone或iPad上禁用和停用iMessage
查看>>