1.业务场景:一个大service里面,调用多个service假设a,b,c。
其中a成功,b里面失败。但是a中有操作数据库和异步放redis缓存操作,所以需要监听事务如果失败,需要回到a中删除缓存。
2.原理:同aop环绕通知,在事务执行前后我们需要做一些细节处理。使用
TransactionSynchronizationManager提供很多方法可以帮我们解决。
3.伪代码
1.多个service:
服务A
public interface ConsumeCodeTotalService {
void test1();
}
@Service
@Slf4j
public class ConsumeCodeTotalServiceImpl implements ConsumeCodeTotalService {
@Override
public void test1() {
//执行第一个成功
log.info("=================test1.1============");
//执行第二个
log.info("================test1.2=============");