1.2.x 版本不向下兼容1.1.x,主要在声明tcc服务方法的注解有改变。1.2.x不同于1.1.x主要的地方在于发布服务时不再强制要求服务方法参数必须有TransactionContext参数,从而减少对业务代码的侵入。

Try: 尝试执行业务

完成所有业务检查(一致性)

预留必须业务资源(准隔离性)

Confirm: 确认执行业务

真正执行业务

不作任何业务检查

只使用Try阶段预留的业务资源

Confirm操作满足幂等性

Cancel: 取消执行业务

释放Try阶段预留的业务资源

Cancel操作满足幂等性

示例说明:

tcc-transaction-tutorial-sample示例演示了在使用dubbo作为rpc调用情况下如何使用tcc-transaction(tcc-transaction不和底层使用的rpc框架耦合,也就是使用doubbo,thrift,web service,http等都可)。

本示例演示在下完订单后,使用红包帐户和资金帐户来付款,红包帐户服务和资金帐户服务在不同的系统中。示例中,有两个SOA提供方,一个是CapitalTradeOrderService,代表着资金帐户服务,另一个是RedPacketTradeOrderService,代表着红包帐户服务。

下完订单后,订单状态为DRAFT,在TCC事务中TRY阶段,订单支付服务将订单状态变成PAYING,同时远程调用红包帐户服务和资金帐户服务,将付款方的余额减掉(预留业务资源);如果在TRY阶段,任何一个服务失败,tcc-transaction将自动调用这些服务对应的cancel方法,订单支付服务将订单状态变成PAY_FAILED,同时远程调用红包帐户服务和资金帐户服务,将付款方余额减掉的部分增加回去;如果TRY阶段正常完成,则进入CONFIRM阶段,在CONFIRM阶段(tcc-transaction自动调用),订单支付服务将订单状态变成CONFIRMED,同时远程调用红包帐户服务和资金帐户服务对应的CONFIRM方法,将收款方的余额增加。特别说明下,由于是示例,在CONFIRM和CANCEL方法中没有实现幂等性,如果在真实项目中使用,需要保证CONFIRM和CANCEL方法的幂等性。

在运行sample前,需搭建好db环境,运行dbscripts目录下的create_db.sql建立数据库实例及表;还需修改各种项目中jdbc.properties文件中的jdbc连接信息。

如有问题可以在本项目的github issues中提问。

java实现TCC_tcc-transaction相关推荐

  1. 记一次事务报错问题 Transaction synchronization is not active

    问题场景 在一次请求的返回结果中出现了这个错误信息"Transaction synchronization is not active",意思是"事务同步器没有激活&qu ...

  2. Redis与Java - 实践

    Redis与Java - 实践 标签 : Java与NoSQL Transaction Redis事务(transaction)是一组命令的集合,同命令一样也是Redis的最小执行单位, Redis保 ...

  3. Java面试中常问的Spring方面问题(涵七大方向共55道题,含答案)

    Spring Framework 现在几乎已成为 Java Web 开发的标配框架.那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢?不妨用本文的问题来检测一下. 1.一般 ...

  4. java jdbc事务_Java JDBC事务管理和保存点

    java jdbc事务 Transaction Management in java is required when we are dealing with relational databases ...

  5. Transaction synchronization is not active问题

    使用场景 我遇到的是在使用异步进行操作时遇到的问题. java.lang.IllegalStateException: Transaction synchronization is not activ ...

  6. java面试题目 5

    http://blog.csdn.net/ziruobing/article/details/3938615 WEBLOGIC 1.   WEBLOGIC域里面的服务器分那几种,他们之间的关系是什么? ...

  7. 记录Java黑皮书的学习(超多题目)

    目录 1.显示日历 2.科学:某天星期几 3.显示金字塔 4.使用循环语句打印4个图案 5.打印金字塔形的数字 6.财务应用程序:比较不同利率下的贷款 7.财务应用程序:显示分期还贷时间表 8.倒排一 ...

  8. java spring 事务传播_spring事务传播机制实例讲解

    天温习spring的事务处理机制,总结如下 对于SQL事务的概念以及ACID性质,可以参见我的另一篇博文 http://kingj.iteye.com/admin/blogs/1675011 spri ...

  9. java spring面试题附pdf答案(最全版本持续更新)

    前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文 ...

  10. Java实现区块链Demo

    区块链与比特币概念 区块链(BlockChain)起源于比特币,2008年11月1日,一位自称中本聪(Satoshi Nakamoto)的人发表了<比特币:一种点对点的电子现金系统>一文, ...

最新文章

  1. Android控件美化Shape
  2. Call apply 用法
  3. python web为什么不火-python web为什么不火
  4. buildPyramid函数
  5. 深入研究Servlet线程安全性问题
  6. python算法的基本原理_kNN算法基本原理与Python代码实践
  7. 我将要关注的kaggle比赛
  8. Linux下MongoDB非正常关闭启动异常解决方法
  9. Restlet 指南
  10. windos不能在本地计算机启动服务器,WDS 服务器可能无法启动 - Windows Server | Microsoft Docs...
  11. 接上文安装完opencv后安装viz模块
  12. android命令行启动,Android中使用am命令实现在命令行启动程序详解
  13. 《汉信码》——中国首个完全自主知识产权二维条码国家标准颁布
  14. Cisco CCIE之建立详细的故障检测检查表
  15. LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)
  16. 小程序外包公司有哪些选择参考标准?
  17. 大学专业分类及专业代码爬取
  18. 圣斗士星矢ol外国服务器网站,国外粉丝狂热支持《圣斗士星矢ol》
  19. 任务中国—— 一个新的互联网Web2.0应用方式
  20. zookeeper 使用场景

热门文章

  1. SEO优化之长尾词策略 - 站长之家
  2. python实现淘宝自动回复_10分钟教你用Python实现微信自动回复功能
  3. sqlserver:使用 SqlBulkCopy 批量插入数据
  4. 新建计算机用户名自动覆盖原来,win10系统让新建账户直接覆盖administrator账户的设置技巧...
  5. jq获取页面高度_js与jquery获取屏幕宽度与高度
  6. jquery面试题整理
  7. JDBC——数据库连接池
  8. Maven 问题could not calculate build plan: plugin的处理
  9. Linux——(3-vim and 用户权限 组)
  10. oracle trunc函数 q,oracle中trunc函数的用法