王者_来归 2021-08-12 19:23 采纳率: 0%
浏览 283

Spring Cloud + OpenFeign + JPA + Sharding jdbc + Seata整合的问题

问题:
分布式事务没有回滚,不报错。
详细描述:
一、我使用Spring Cloud+OpenFeign+JPA+Seata,没有问题,无论如何数据都是正常回滚的;
我使用Spring Cloud+OpenFeign+JPA+Sharding jdbc,也是正常的,只不过分布式事务会有问题
二、当我加入Sharding jdbc(sharding-jdbc-spring-boot-starter 4.1.1),与一当中有如下不同:
1、在一当中,增加了一个DataSourceConfiguration,整合shardingjdbc后,不使用这个配置:

@Configuration
public class DataSourceConfiguration {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    /**
     * 需要将 DataSourceProxy 设置为主数据源,否则事务无法回滚
     *
     * @param druidDataSource The DruidDataSource
     * @return The default datasource
     */
    @Primary
    @Bean("dataSource")
    public DataSource dataSource(DruidDataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }
}

2、在application.yml中修改了相关的数据库配置(按sharding jdbc的方式修改)
3、在服务间调用的方法上,原来使用的是:@GlobalTransactional,现在使用的是:@Transactional @ShardingTransactionType(value = TransactionType.BASE)

业务逻辑:
调用服务A中的方法,在服务A中,首先调用服务B的方法,插入数据,然后在A中的方法中再插入数据,最好抛出一个异常。
预期效果:
正常情况下,当A中的方法抛出异常后,服务B和服务A中都会回滚
实际效果:
A服务中的数据回滚了,但B服务中没有回滚

按照网上说的,在A服务中增加一个配置如下,但也没有回滚数据:

@Configuration
@EnableTransactionManagement
public class TransactionConfig {
  @Bean
    public PlatformTransactionManager txManager(final DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

搞了三天了,实在没办法
PS:Seata使用的是1.4版本,没有注册中心使用eureka,配置中心没有变,使用的是file

  • 写回答

2条回答 默认 最新

  • a1767028198 2021-08-12 20:28
    关注

    你不改写事务aop的源码,又不用全局事物,那seata怎么起作用

    评论

报告相同问题?

问题事件

  • 创建了问题 8月12日

悬赏问题

  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏