Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

qingfeng0820/ByteTCC

Open more actions menu
 
 

Repository files navigation

ByteTCC是一个基于TCC(Try/Confirm/Cancel)机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器(本文档下文说明中将以Spring容器为例)进行集成。

一、快速入门

1.1. 加入maven依赖

<dependency>
	<groupId>org.bytesoft</groupId>
	<artifactId>bytetcc-supports</artifactId>
	<version>0.3.1</version>
</dependency>

1.2. 编写业务服务

@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. 编写confirm服务

@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. 编写cancel服务

@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);
	}

}

二、文档 & 样例

三、ByteTCC特性

  • 1、支持Spring容器的声明式事务管理;
  • 2、支持普通事务、TCC事务、业务补偿型事务等事务机制;
  • 3、支持多数据源、跨应用、跨服务器等分布式事务场景;
  • 4、支持长事务;
  • 5、支持dubbo服务框架;

四、历史版本

4.1. v0.1

4.2. v0.1.2

4.3. v0.2.0-alpha

五、建议及改进

若您有任何建议,可以通过1)加入qq群537445956向群主提出,或2)发送邮件至bytefox@126.com向我反馈。本人承诺,任何建议都将会被认真考虑,优秀的建议将会被采用,但不保证一定会在当前版本中实现。

About

ByteTCC Transaction Manager旨在提供一个兼容JTA的基于TCC机制的分布式事务管理器。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.