首页 > 其他分享 >seata分布式事务不生效

seata分布式事务不生效

时间:2023-12-20 16:23:04浏览次数:29  
标签:return seata insertStatus private class 生效 Integer public 分布式

Fegin调用使用了Fallback降级或抛出的异常被全局处理

解决:

1.通过 GlobalTransactionContext.reload(RootContext.getXID()).rollback() 进行手动回滚

==============服务A
@Service
public class ServiceAImpl implements IServiceA
{
 
    private static final Logger log = LoggerFactory.getLogger(ServiceAImpl.class);
 
    @Autowired
    private IServiceB serviceB;
    @Autowired
    private IServiceC serviceC;
    
    @Override
    @GlobalTransactional
    @Transactional
    public Boolean doA() {
        Integer bStatus = serviceB.doB();
        if(bStatus == 0){//在Mybatis中,返回值为0证明插入失败
            //手动回滚
            GlobalTransactionContext.reload(RootContext.getXID()).rollback();
            return false;
        }
        Integer cStatus = serviceC.doC();
        if(cStatus == 0){//在Mybatis中,返回值为0证明插入失败
            //手动回滚
            GlobalTransactionContext.reload(RootContext.getXID()).rollback();
            return false;
        }
        //......
    }
 
}
 
===============服务B
@Service
public class ServiceBImpl implements IServiceB
{
 
    private static final Logger log = LoggerFactory.getLogger(ServiceBImpl.class);
 
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public Boolean doB() {
        //......
        Integer insertStatus = serviceBDAO.insert();
        return insertStatus;
    }
 
}
 
===============服务C
@Service
public class ServiceCImpl implements IServiceC
{
 
    private static final Logger log = LoggerFactory.getLogger(ServiceCImpl.class);
 
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public Boolean doC() {
        //......
        Integer insertStatus = serviceCDAO.insert();
        return insertStatus;
    }
 
}

  2.直接在FallbackFactory实现类直接将异常抛出或者不实现fallbackFactory

标签:return,seata,insertStatus,private,class,生效,Integer,public,分布式
From: https://www.cnblogs.com/Ai-Hen-Jiao-zhi/p/17916743.html

相关文章

  • 《分布式中间件核心原理与RocketMQ最佳实践》
    ......
  • uniapp vue3版本的scroll-view的scroll-into-view方法不生效解决
    问题代码如图bug原因建了vue2版本和vue3版本的uniapp分别测试,vue3版本的scroll-view存在scroll-into-view不生效的问题,目前未修复(23.12.20)解决方法,换了个思路,如图思路:获取当前选中元素的left值,并动态绑定给scroll-left实现定位效果......
  • DeepSpeed分布式训练
    一、DeepSpeed总纲官方文档:DeepSpeed官方英文文档cpoy下来的原版DeepSpeed模型的训练是使用DeeSpeed引擎完成的DeepSpeed引擎可以包装任何torch.nn.module类型的模型二、训练1、通过deepspeed.initialize初始化#deepspeed.initialize确保分布式数据并行或混合精度......
  • 分布式资源管理和调度
    分布式资源管理和调度分布式资源管理和调度是指在分布式系统中有效地管理和调度系统中的资源,以满足各种任务的需求。在一个分布式系统中,资源可以包括计算资源(如CPU、内存)、存储资源(如磁盘空间)、网络带宽等。分布式资源管理的目标是实现高效的资源利用和公平的资源分配。它需要考......
  • 李强 分布式计算、云计算与大数据 作者:林伟伟 著出版社:机械工业出版社出版时间:20
    前言背景分布式计算从20世纪六七十年代发展到现在,一直是计算机科学技术的理论与应用的热点问题,特别是*近几年,随着互联网、移动互联网、社交网络应用的发展,急需分布式计算的新技术——云计算、大数据,以满足和实现新时代计算机的应用需求。云计算、大数据等新技术本质上是分布式计......
  • 解决MyBatis-Plus 更新字段为null 不生效
    1.异常说明:mapper.updateById()时,set为null未生效,其他字段更新periodRecordOriginal.setSettleTime(null);periodRecordOriginal.setActualSettleTime(null);periodRecordOriginal.setSettleStatus(0);i......
  • 启动微服务报错:java.lang.IllegalStateException: Service id not legal hostname (se
    Order微服务通过opneFeign调用storage和account时报错原因分析:服务名称不能有下划线,可以使用中划线,Springcloud无法识别下划线,将下划线改为中划线即可注意:这个改了之后,你在进行远程调用的时候,接口对应的方法接口也需要相应改变【分布式开发,一个微服务模块修改了,很可能......
  • 分布式架构的演变过程
    1.单应用架构此时用户量很少,所有功能全部都在一个应用中,应用和数据库部署在一台机器上。2.应用服务器和数据库服务器分离随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台服务器,将数据库分离出去。3.应用服务器集群突然有一天......
  • 浅谈分布式事务
    事务:事务是指由一组操作组成的一个工作单元,这个工作单元具有原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。原子性:执行单元中的操作要么全部执行成功,要么全部失败。如果有一部分成功一部分失败那么成功的操作要全部回滚到执行前的状态。一致性:执行......
  • 测试开发 | 保护数据隐私的分布式学习方法:构建安全智能未来
    随着信息时代的不断发展,数据隐私的安全性成为科技领域亟待解决的问题之一。分布式学习作为一种保护数据隐私的先进方法,正在成为构建安全智能未来的关键一环。本文将探讨分布式学习方法如何在保护数据隐私的同时推动科技发展。1.数据隐私的挑战随着大数据时代的到来,个人隐私数据的......