2025.2.28Bug Bug1(已解决) 起始: 启动服务时不能与seata-server建立连接,发现是application.yml的seata事物组tx_service_group配置错误(与seata-server的file.conf的tx_service_group不一致)解决方法: 改成一样就好了
cloud: alibaba: seata: tx-service-group: cbh_order_tx_group nacos: discovery: server-addr: localhost:8848
service { vgroup_mapping.cbh_order_tx_group = "default" default.grouplist = "127.0.0.1:8091" enableDegrade = false disable = false max.commit.retry.timeout = "-1" max.rollback.retry.timeout = "-1" }
Bug2(已解决) 起始:使用@GlobalTransactional
做全局事务控制的时候发现seata的日志虽然显示全局事务被回滚(rollback status:Rollbacked
) ,但是数据库的数据仍然被修改了,找了老半天结果发现是seata代理数据源的配置类忘记加上@Configuration
注解了,配置没有生效,而且注入mapperLocations
的注解还写错了,导致启动一直失败。。。。
解决方法:给seata代理数据源的配置类加上@Configuration
注解和修改注入mapperLocations
的注解
@Configuration public class DataSourceProxyConfig { @Value("${mybatis.mapper-locations}") private String mapperLocation; @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDatasource () { return new DruidDataSource (); } @Bean public DataSourceProxy dataSourceProxy (DataSource dataSource) { return new DataSourceProxy (dataSource); } @Bean public SqlSessionFactory sqlSessionFactoryBean (DataSourceProxy dataSourceProxy) throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean (); sqlSessionFactoryBean.setDataSource(dataSourceProxy); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver ().getResources(mapperLocation)); sqlSessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory ()); return sqlSessionFactoryBean.getObject(); } }