【发布时间】:2015-09-20 15:21:59
【问题描述】:
有没有什么方法可以获取当前的事务 id,存储/传递它,并在应用程序的另一部分检查它的状态?
例如:
@Service
public class Service {
...
@Transactional(rollbackFor = Exception.class)
public void performAction(Action action) {
// start action
String transactionId = ??? // getting current transaction id
messenger.send(transactionId); // sending transaction id to consumer
// continue action
} <- commit transaction
}
public class Consumer {
...
public void onRecieveMessage(String transactionId) {
TransactionStatus ts = ??? // getting transaction from pool by id
if (ts.isCompleted()) {
// some actions
} else {
// wating or Future<?> or something else...
}
}
}
(其实问题是Consumer.onRecieveMessage在action的事务完成之前执行,数据状态是旧的)
【问题讨论】:
标签: java spring transactions spring-transactions transactional