@Service
public class A {
@Autowired
private B b;
@Transactional
public void a() {
// 数据库操作
b.b();
}
}
@Service
public class B {
@Async
public void b() {
int i = 1 / 0;
}
}
如上伪代码,在A类的事务(@Transactional)方法a()中调用B类的异步(@Async)方法b(),若异步方法b()中抛异常了,请问事务方法a()如何才能回滚事务呢?谢谢!
异步的方法报错了,想要本方法回滚
我的处理方式是等待,然后用消息通知来处理,不过这种方式并发高问题会很大,你可以把数据库操作放到异步去嘛
把异步作为业务的最后一步来处理