Commit ad8981d5 authored by chenzhao's avatar chenzhao

seata全局事务框架增加

parent e02ce526
...@@ -26,6 +26,11 @@ ...@@ -26,6 +26,11 @@
<!-- <version>${amos-biz-boot.version}</version>--> <!-- <version>${amos-biz-boot.version}</version>-->
<!-- </dependency>--> <!-- </dependency>-->
<dependency> <dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.typroject</groupId> <groupId>org.typroject</groupId>
<artifactId>tyboot-component-emq</artifactId> <artifactId>tyboot-component-emq</artifactId>
<version>1.1.20</version> <version>1.1.20</version>
......
...@@ -43,8 +43,7 @@ import com.yeejoin.amos.boot.biz.common.utils.oConvertUtils; ...@@ -43,8 +43,7 @@ import com.yeejoin.amos.boot.biz.common.utils.oConvertUtils;
@EnableScheduling @EnableScheduling
@MapperScan({ "org.typroject.tyboot.demo.face.orm.dao*", "org.typroject.tyboot.face.*.orm.dao*", @MapperScan({ "org.typroject.tyboot.demo.face.orm.dao*", "org.typroject.tyboot.face.*.orm.dao*",
"org.typroject.tyboot.core.auth.face.orm.dao*", "org.typroject.tyboot.component.*.face.orm.dao*", "org.typroject.tyboot.core.auth.face.orm.dao*", "org.typroject.tyboot.component.*.face.orm.dao*",
"com.yeejoin.amos.boot.module.**.api.tdenginemapper", "com.yeejoin.amos.boot.module.**.api.mapper", "com.yeejoin.amos.boot.module.**.api.tdenginemapper","com.yeejoin.amos.boot.module.**.api.mapper", "com.yeejoin.amos.boot.biz.common.dao.mapper","com.yeejoin.amos.boot.module.common.biz.*" })
"com.yeejoin.amos.boot.biz.common.dao.mapper", "com.yeejoin.amos.boot.module.common.biz.*" })
@ComponentScan(basePackages = { "org.typroject", @ComponentScan(basePackages = { "org.typroject",
"com.yeejoin.amos" }, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = { "com.yeejoin.amos" }, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
GlobalExceptionHandler.class })) GlobalExceptionHandler.class }))
......
package com.yeejoin.amos.boot.module.hygf.biz.config; //package com.yeejoin.amos.boot.module.hygf.biz.config;
//
import com.baomidou.mybatisplus.core.config.GlobalConfig; //import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; //import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; //import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.yeejoin.amos.boot.biz.config.MetaHandler; //import com.yeejoin.amos.boot.biz.config.MetaHandler;
import com.yeejoin.amos.boot.biz.config.MybatisSqlInjector; //import com.yeejoin.amos.boot.biz.config.MybatisSqlInjector;
import com.zaxxer.hikari.HikariDataSource; //import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy; //import io.seata.rm.datasource.DataSourceProxy;
import javax.sql.DataSource; //import javax.sql.DataSource;
import org.apache.ibatis.plugin.Interceptor; //import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory; //import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; //import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; //import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; //import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; //import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver; //import org.springframework.core.io.support.ResourcePatternResolver;
//
/** ///**
* 数据源代理 // * 数据源代理
* // *
* @author LiuLin // * @author LiuLin
*/ // */
@Configuration //@Configuration
public class DataSourceConfiguration { //public class DataSourceConfiguration {
//
@Autowired // @Autowired
private DataSourceProperties dsp; // private DataSourceProperties dsp;
//
@Bean(name = "hikariDataSource") // @Bean(name = "hikariDataSource")
public HikariDataSource hikariDataSource() { // public HikariDataSource hikariDataSource() {
HikariDataSource hds = new HikariDataSource(); // HikariDataSource hds = new HikariDataSource();
hds.setSchema(dsp.getSchema().get(0)); // hds.setSchema(dsp.getSchema().get(0));
hds.setUsername(dsp.getUsername()); // hds.setUsername(dsp.getUsername());
hds.setPassword(dsp.getPassword()); // hds.setPassword(dsp.getPassword());
hds.setJdbcUrl(dsp.getUrl()); // hds.setJdbcUrl(dsp.getUrl());
hds.setDriverClassName(dsp.getDriverClassName()); // hds.setDriverClassName(dsp.getDriverClassName());
hds.setConnectionTimeout(3000); // hds.setConnectionTimeout(3000);
hds.setMaximumPoolSize(30); // hds.setMaximumPoolSize(30);
hds.setMinimumIdle(10); // hds.setMinimumIdle(10);
return hds; // return hds;
} // }
//
@Primary // @Primary
@Bean("dataSource") // @Bean("dataSource")
public DataSourceProxy dataSourceProxy(@Qualifier("dataSource") DataSource hikariDataSource) { // public DataSourceProxy dataSourceProxy(@Qualifier("dataSource") DataSource hikariDataSource) {
return new DataSourceProxy(hikariDataSource); // return new DataSourceProxy(hikariDataSource);
} // }
//
@Bean(name = "sqlSessionFactory") // @Bean(name = "sqlSessionFactory")
@Autowired // @Autowired
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSourceProxy, PaginationInterceptor paginationInterceptor, MetaHandler metaHandler) throws Exception { // public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSourceProxy, PaginationInterceptor paginationInterceptor, MetaHandler metaHandler) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); // MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSourceProxy); // bean.setDataSource(dataSourceProxy);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); // ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml")); // bean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
GlobalConfig globalConfig = new GlobalConfig(); // GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSqlInjector(new MybatisSqlInjector()); // globalConfig.setSqlInjector(new MybatisSqlInjector());
globalConfig.setMetaObjectHandler(metaHandler); // globalConfig.setMetaObjectHandler(metaHandler);
bean.setGlobalConfig(globalConfig); // bean.setGlobalConfig(globalConfig);
Interceptor[] plugins = {paginationInterceptor}; // Interceptor[] plugins = {paginationInterceptor};
bean.setPlugins(plugins); // bean.setPlugins(plugins);
return bean.getObject(); // return bean.getObject();
} // }
//
@Bean // @Bean
public MetaHandler metaHandler() { // public MetaHandler metaHandler() {
return new MetaHandler(); // return new MetaHandler();
} // }
} //}
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor; import com.github.pagehelper.PageInterceptor;
import com.yeejoin.amos.boot.biz.config.MetaHandler; import com.yeejoin.amos.boot.biz.config.MetaHandler;
import com.yeejoin.amos.boot.module.hygf.api.config.UserEmpowerInterceptor; import com.yeejoin.amos.boot.module.hygf.api.config.UserEmpowerInterceptor;
import io.seata.rm.datasource.DataSourceProxy;
import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
...@@ -43,16 +44,18 @@ public class MysqlServerConfig { ...@@ -43,16 +44,18 @@ public class MysqlServerConfig {
return DataSourceBuilder.create().build(); return DataSourceBuilder.create().build();
} }
@Bean("mysqlDataSourceProxy")
public DataSourceProxy dataSourceProxy(@Qualifier("mysqlDataSource") DataSource hikariDataSource) {
return new DataSourceProxy(hikariDataSource);
}
@Bean(name = "mysqlSqlSessionFactory") @Bean(name = "mysqlSqlSessionFactory")
@Primary @Primary
public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource, GlobalConfig globalConfig) throws Exception { public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSourceProxy") DataSource dataSource, GlobalConfig globalConfig) throws Exception {
//注意这里一定要用MybatisSqlSessionFactoryBean,如果用SqlSessionFactory,配置无效 //注意这里一定要用MybatisSqlSessionFactoryBean,如果用SqlSessionFactory,配置无效
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource); bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION)); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
globalConfig.setMetaObjectHandler(metaHandler); globalConfig.setMetaObjectHandler(metaHandler);
bean.setGlobalConfig(globalConfig); bean.setGlobalConfig(globalConfig);
//分页插件 //分页插件
...@@ -67,8 +70,6 @@ public class MysqlServerConfig { ...@@ -67,8 +70,6 @@ public class MysqlServerConfig {
"" + "" +
";"); ";");
interceptor.setProperties(properties); interceptor.setProperties(properties);
bean.setPlugins(new Interceptor[] {interceptor, bean.setPlugins(new Interceptor[] {interceptor,
userEmpowerInterceptor(), userEmpowerInterceptor(),
paginationInterceptor() paginationInterceptor()
......
package com.yeejoin.amos.boot.module.hygf.biz.config; package com.yeejoin.amos.boot.module.hygf.biz.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor; import com.github.pagehelper.PageInterceptor;
...@@ -9,6 +10,7 @@ import org.apache.ibatis.session.SqlSessionFactory; ...@@ -9,6 +10,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -29,13 +31,33 @@ import java.util.Properties; ...@@ -29,13 +31,33 @@ import java.util.Properties;
@MapperScan(basePackages = "com.yeejoin.amos.boot.module.hygf.api.tdenginemapper", sqlSessionTemplateRef = "tdengineSqlSessionTemplate") @MapperScan(basePackages = "com.yeejoin.amos.boot.module.hygf.api.tdenginemapper", sqlSessionTemplateRef = "tdengineSqlSessionTemplate")
public class TDengineServerConfig { public class TDengineServerConfig {
@Value("${spring.datasource.tdengine-service.jdbc-url}")
private String dbUrl;
@Value("${spring.datasource.tdengine-service.username}")
private String username;
@Value("${spring.datasource.tdengine-service.password}")
private String password;
@Value("${spring.datasource.tdengine-service.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.tdengine-service.type}")
private String dbType;
private static final String MAPPER_LOCATION = "classpath*:mapper/tdengine/*.xml"; private static final String MAPPER_LOCATION = "classpath*:mapper/tdengine/*.xml";
@Bean(name = "tdengineDataSource") @Bean(name = "tdengineDataSource")
@ConfigurationProperties(prefix = "spring.datasource.tdengine-service") @ConfigurationProperties(prefix = "spring.datasource.tdengine-service")
public DataSource tdengineDataSource() { public DataSource tdengineDataSource() {
// DruidDataSource datasource = new DruidDataSource();
// datasource.setUrl(this.dbUrl);
// datasource.setUsername(username);
// datasource.setPassword(password);
// datasource.setDriverClassName(driverClassName);
// datasource.setDbType(dbType);
// return datasource;
return DataSourceBuilder.create().build(); return DataSourceBuilder.create().build();
} }
......
...@@ -229,5 +229,12 @@ dealer.appcode.role=1767363928842571777 ...@@ -229,5 +229,12 @@ dealer.appcode.role=1767363928842571777
dealer.amosDealerId=1767820997374775298 dealer.amosDealerId=1767820997374775298
#Seata Config #Seata Config
seata.tx-service-group= jxiop-seata seata.tx-service-group= hygf-seata
seata.service.grouplist.jxiop-seata=47.92.234.253:8091 seata.service.grouplist.hygf-seata=47.92.234.253:8091
\ No newline at end of file
# Seata 配置
seata.enabled=true
seata.enable-auto-data-source-proxy=false
...@@ -30,7 +30,7 @@ transport { ...@@ -30,7 +30,7 @@ transport {
} }
service { service {
#transaction service group mapping #transaction service group mapping
vgroupMapping.tzs-seata = "jxiop-seata" vgroupMapping.hygf-seata = "hygf-seata"
#only support when registry.type=file, please don't set multiple addresses #only support when registry.type=file, please don't set multiple addresses
default.grouplist = "47.92.234.253:8091" default.grouplist = "47.92.234.253:8091"
#degrade, current not support #degrade, current not support
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment