# ByteTCC **Repository Path**: jason_1990/ByteTCC ## Basic Information - **Project Name**: ByteTCC - **Description**: ByteTCC Transaction Manager旨在提供一个兼容JTA的基于TCC机制的分布式事务管理器。用户手册: https://github.com/liuyangming/ByteTCC/wiki - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 56 - **Created**: 2022-06-25 - **Last Updated**: 2022-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README  **ByteTCC** is an implementation of Distributed Transaction Manager, based on Try-Confirm-Cancel (TCC) mechanism. **ByteTCC** is comptible with JTA and could be seamlessly integrated with Spring and other Java containers. ## 1. Quick Start #### 1.1 Add maven depenency ###### 1.1.1. Spring Cloud ```xml org.bytesoft bytetcc-supports-springcloud 0.5.10 ``` ###### 1.1.2. dubbo ```xml org.bytesoft bytetcc-supports-dubbo 0.5.10 ``` #### 1.2 Compose a business service ```java @Service("accountService") @Compensable( interfaceClass = IAccountService.class , confirmableKey = "accountServiceConfirm" , cancellableKey = "accountServiceCancel" ) public class AccountServiceImpl implements IAccountService { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; @Transactional public void increaseAmount(String accountId, double amount) throws ServiceException { this.jdbcTemplate.update("update tb_account set frozen = frozen + ? where acct_id = ?", amount, acctId); } } ``` #### 1.3 Compose a confirm service ```java @Service("accountServiceConfirm") public class AccountServiceConfirm implements IAccountService { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; @Transactional public void increaseAmount(String accountId, double amount) throws ServiceException { this.jdbcTemplate.update("update tb_account set amount = amount + ?, frozen = frozen - ? where acct_id = ?", amount, amount, acctId); } } ``` #### 1.4 Compose a cancel service ```java @Service("accountServiceCancel") public class AccountServiceCancel implements IAccountService { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; @Transactional public void increaseAmount(String accountId, double amount) throws ServiceException { this.jdbcTemplate.update("update tb_account set frozen = frozen - ? where acct_id = ?", amount, acctId); } } ``` ## 2. Documentation & Samples * [Document](https://github.com/liuyangming/ByteTCC/wiki) * [Sample](https://github.com/liuyangming/ByteTCC-sample) ## 3. Features * support declarative transaction management * support normal transaction, TCC transaction, compensating service transaction * support distributed transaction scenarios. e.g. multi-datasource, cross-applications and cross-servers transaction * support long live transaction * support Dubbo framework * support Spring Cloud * provide solutions for service idempotence in framework layer ## 4. Contact Me If you have any questions or comments regarding this project, please feel free to contact me at: 1. send mail to _[bytefox#126.com](bytefox@126.com)_ ~OR~ 2. add Tecent QQ group 537445956/606453172/383515467 We will review all the suggestions and implement good ones in future release.