当前位置: 首页 > news >正文

网站设计心得石家庄个人建网站

网站设计心得,石家庄个人建网站,新泰州人才网最新招聘2022,网站地图制作怎么做?遇到的问题 在微服务项目中 有A、B、C三个服务 其中 A调用B服务 ,B调用C, 这些就是跨服务调用了,在A服务中 还调用了一个当前模块执行插入数据的方法(在这里我就叫它为AA 也就是mybatis/spring管理的本地事务) A服务开启全局事务注解 Globa…

遇到的问题

在微服务项目中 有A、B、C三个服务 其中 A调用B服务 ,B调用C, 这些就是跨服务调用了,在A服务中 还调用了一个当前模块执行插入数据的方法(在这里我就叫它为AA 也就是mybatis/spring管理的本地事务)

A服务开启全局事务注解 @GlobalTransactional
B服务注解 @Transactional(propagation = Propagation.REQUIRES_NEW)
C服务注解 @Transactional(propagation = Propagation.REQUIRES_NEW)
AA是所属A模块中的Service的一个方法 也叫本地服务

遇到的问题1) A调用B失败后 A提交了没有回滚

原因 : A调用B失败后 B抛出的异常被 微服务全局捕异常给处理了 并没有抛出异常(再抛还是会被全局捕异常处理的) TM不知道B失败了

这里可以在全局捕异常中将 分布式事务关闭

  /*** 如果开启分布式事务,就设置response.status = 500,seata的tm(事务管理器)* 并主动回滚**/private static void setRespErrStatus(HttpServletResponse response) {//如果开启分布式事务,设置错误状态码,让事务回滚if (StringUtils.isNotBlank(RootContext.getXID())) {log.error("全局捕异常 捕获到Seata " + " 事务id-------------API--------->" + RootContext.getXID());log.error("全局捕异常 捕捉到Seata 事务" + RootContext.getXID() + " 抛出异常 设置response 状态码为 500 ");log.error("全局捕获到 Seata异常 全局回滚");try {response.setStatus(500);GlobalTransactionContext.reload(RootContext.getXID()).rollback();log.error(" 数据提交失败");} catch (TransactionException e) {log.error(" 捕获seata异常·不处理");}} else {response.setStatus(200);}}

遇到的问题2)B调用C失败后 AB都提交了没有回滚

原因 : C服务虽然加了 @Transactional(propagation = Propagation.REQUIRES_NEW) 这个在TM没有注册进来(听说是Seata中的bug 博主没有去复现这个问题 这个需要我们调用 RootContext.bind(xid); 进行绑定 )

在Feign调用前 判断 xid是否为空 如果不为空则将 xid绑定

	String xid =RootContext.getXID() ; //获取 xid RootContext.bind(xid); //绑定 xid

遇到的问题3)A调用AA失败后 ABC都提交了没有回滚

原因 : 这个是因为分布式事务调用是正常的,只是本地事务失败了 所有分布式事务都提交了,本地事务未提交 ()

遇到的问题4)ABC服务都失败了,ABC事务回滚了 AA提交了

原因 这个是因为分布式事务调用失败, AA本地事务没有加入到分布式事务中去导致的

    String xid =RootContext.getXID() ;xxService.insertScoresGoodInfos(sSysProjectMenu.getPath(),xid);@Overridepublic int insertScoresGoodInfos(String sysType  ,String xid) {RootContext.bind(xid); // 将本地事务加到分布式事务组中去return baseMapper.insertScoresGoodInfos(sysType, sysType + UUID.randomUUID().toString());}

maven

版本如下 seata 版本为1.6.1 (SpringCloud Alibaba里面自带的,如果想用更高版本的可以 排查单独引入 不推荐这个比较坑)

<spring-cloud.version>2021.0.8</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><spring-boot.version>2.7.13</spring-boot.version><druid.version>1.2.18</druid.version><dynamic-ds.version>3.5.2</dynamic-ds.version><mysql.version>5.1.49</mysql.version><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- Dynamic DataSource --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynamic-ds.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- Seata--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>
http://www.15wanjia.com/news/158490.html

相关文章:

  • 收费用的网站怎么做网站卖了对方做违法
  • 潍坊seo网站推广秦皇岛海三建设集团
  • 成都seo网站建设婚纱网站免费源码
  • 自己做网站的成本模板网优酷
  • 苏州网站建设相关技术为什么建设营销型网站
  • 温州市网站制作多少钱网站建设和管理
  • 长沙网站托管哪家好企业网站建设开发成本利润多少
  • 如何提高网站的点击量大气简约企业网站模板
  • wordpress双站 中英文建设银行查询余额进什么网站
  • 移动终端网站开发wordpress 3d标签云
  • 万户做网站怎么样泰州建站价格
  • 手机网站 空间网站优化及推广方案
  • 申请手机网站宁波网络推广优化
  • 福州优秀网站建设公司化妆品网站开发的外文翻译
  • 建个注册页面网站做版权素材网站门槛
  • 网站推广注册WordPress多站點支付插件
  • 个人游戏网站备案高端网站建设 引擎技网络
  • 南宁网站优化排名推广南京设计公司网站
  • 从化区住房和建设局网站php网站后台密码忘记
  • 教医学生做科研的网站有哪些seo项目培训
  • 襄城县城乡建设管理局网站深圳网站设计制作元
  • 免费试用网站 源码阐述电子商务网站的建设流程
  • 营销策划公司简介北京seo怎么优化
  • html5网站开发教学酒店宣传软文
  • 网站推广的效果企业模板图片
  • 中国建设银行预约网站首页wordpress文章参数
  • 门户网站建设和检务公开整改wordpress升级方法
  • 单页网站设计欣赏怎么编写网站
  • 济南网站seo哪家公司好wordpress 当前分类链接地址
  • 怎么在网站投放广告适合大学生浏览的网站