QNJR-GROUP / EasyTransaction

A distribute transaction solution(分布式事务) unified the usage of TCC , SAGA ,FMT (seata/fescar AutoCompensation), reliable message, compensate and so on;
Apache License 2.0
2.36k stars 810 forks source link

Work with RxJava #104

Open yuluyi opened 5 years ago

yuluyi commented 5 years ago

和RxJava一起用的时候, 因为 observeOn在一个非spring的线程, 会提示synchronization not active。 通过 手动 调用

TransactionSynchronizationManager.initSynchronization() 

可以解决这个问题。

但是如果有并发的transaction的时候, 会报

java.lang.RuntimeException: transaction already started,but try to start again。

即使我 observeOn(Schedulers.newThread()) 也没有用。 请问是什么问题呢?

skyesx commented 5 years ago

et的事务是依赖于spring的单机事务的

用et的话,只要求执行et的代码时,被spring定义的事务包裹

TransactionSynchronizationManager.initSynchronization() 

这代码通常不需要外部调用,通过@Transactional或者xml或者TransactionTemplate等开启事务即可