业务场景:
我们经常会有些方法会调用一些方法异步执行,比如入库操作后要异步发送mq消息,发送短信或者发布事件等等
但是往往我们的业务方法总是包含事务的,要么全部成功,要么全部失败。
有的时候事务执行失败了或者还没有提交,异步方法就执行完成了
我们希望:
- 当我们事务失败回滚时,我们的异步操作也不执行
- 我们的异步操作需要等待事务完成后才执行
比如:
@Transactional(rollbackFor = Exception.class)
public boolean testTransactional() {
Warehouse warehouse = warehouseService.getById(1);
warehouse.setUpdateTime(null);
warehouseService