Commit ad8981d5 authored by chenzhao's avatar chenzhao

seata全局事务框架增加

parent e02ce526
......@@ -26,6 +26,11 @@
<!-- <version>${amos-biz-boot.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-emq</artifactId>
<version>1.1.20</version>
......
......@@ -43,8 +43,7 @@ import com.yeejoin.amos.boot.biz.common.utils.oConvertUtils;
@EnableScheduling
@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*",
"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.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.*" })
@ComponentScan(basePackages = { "org.typroject",
"com.yeejoin.amos" }, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
GlobalExceptionHandler.class }))
......
package com.yeejoin.amos.boot.module.hygf.biz.config;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.yeejoin.amos.boot.biz.config.MetaHandler;
import com.yeejoin.amos.boot.biz.config.MybatisSqlInjector;
import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import javax.sql.DataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
/**
* 数据源代理
*
* @author LiuLin
*/
@Configuration
public class DataSourceConfiguration {
@Autowired
private DataSourceProperties dsp;
@Bean(name = "hikariDataSource")
public HikariDataSource hikariDataSource() {
HikariDataSource hds = new HikariDataSource();
hds.setSchema(dsp.getSchema().get(0));
hds.setUsername(dsp.getUsername());
hds.setPassword(dsp.getPassword());
hds.setJdbcUrl(dsp.getUrl());
hds.setDriverClassName(dsp.getDriverClassName());
hds.setConnectionTimeout(3000);
hds.setMaximumPoolSize(30);
hds.setMinimumIdle(10);
return hds;
}
@Primary
@Bean("dataSource")
public DataSourceProxy dataSourceProxy(@Qualifier("dataSource") DataSource hikariDataSource) {
return new DataSourceProxy(hikariDataSource);
}
@Bean(name = "sqlSessionFactory")
@Autowired
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSourceProxy, PaginationInterceptor paginationInterceptor, MetaHandler metaHandler) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSourceProxy);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSqlInjector(new MybatisSqlInjector());
globalConfig.setMetaObjectHandler(metaHandler);
bean.setGlobalConfig(globalConfig);
Interceptor[] plugins = {paginationInterceptor};
bean.setPlugins(plugins);
return bean.getObject();
}
@Bean
public MetaHandler metaHandler() {
return new MetaHandler();
}
}
//package com.yeejoin.amos.boot.module.hygf.biz.config;
//
//import com.baomidou.mybatisplus.core.config.GlobalConfig;
//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
//import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
//import com.yeejoin.amos.boot.biz.config.MetaHandler;
//import com.yeejoin.amos.boot.biz.config.MybatisSqlInjector;
//import com.zaxxer.hikari.HikariDataSource;
//import io.seata.rm.datasource.DataSourceProxy;
//import javax.sql.DataSource;
//import org.apache.ibatis.plugin.Interceptor;
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import org.springframework.core.io.support.ResourcePatternResolver;
//
///**
// * 数据源代理
// *
// * @author LiuLin
// */
//@Configuration
//public class DataSourceConfiguration {
//
// @Autowired
// private DataSourceProperties dsp;
//
// @Bean(name = "hikariDataSource")
// public HikariDataSource hikariDataSource() {
// HikariDataSource hds = new HikariDataSource();
// hds.setSchema(dsp.getSchema().get(0));
// hds.setUsername(dsp.getUsername());
// hds.setPassword(dsp.getPassword());
// hds.setJdbcUrl(dsp.getUrl());
// hds.setDriverClassName(dsp.getDriverClassName());
// hds.setConnectionTimeout(3000);
// hds.setMaximumPoolSize(30);
// hds.setMinimumIdle(10);
// return hds;
// }
//
// @Primary
// @Bean("dataSource")
// public DataSourceProxy dataSourceProxy(@Qualifier("dataSource") DataSource hikariDataSource) {
// return new DataSourceProxy(hikariDataSource);
// }
//
// @Bean(name = "sqlSessionFactory")
// @Autowired
// public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSourceProxy, PaginationInterceptor paginationInterceptor, MetaHandler metaHandler) throws Exception {
// MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
// bean.setDataSource(dataSourceProxy);
// ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
// bean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
// GlobalConfig globalConfig = new GlobalConfig();
// globalConfig.setSqlInjector(new MybatisSqlInjector());
// globalConfig.setMetaObjectHandler(metaHandler);
// bean.setGlobalConfig(globalConfig);
// Interceptor[] plugins = {paginationInterceptor};
// bean.setPlugins(plugins);
// return bean.getObject();
// }
//
// @Bean
// public MetaHandler metaHandler() {
// return new MetaHandler();
// }
//}
......@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor;
import com.yeejoin.amos.boot.biz.config.MetaHandler;
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.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
......@@ -43,16 +44,18 @@ public class MysqlServerConfig {
return DataSourceBuilder.create().build();
}
@Bean("mysqlDataSourceProxy")
public DataSourceProxy dataSourceProxy(@Qualifier("mysqlDataSource") DataSource hikariDataSource) {
return new DataSourceProxy(hikariDataSource);
}
@Bean(name = "mysqlSqlSessionFactory")
@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 bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
globalConfig.setMetaObjectHandler(metaHandler);
bean.setGlobalConfig(globalConfig);
//分页插件
......@@ -67,8 +70,6 @@ public class MysqlServerConfig {
"" +
";");
interceptor.setProperties(properties);
bean.setPlugins(new Interceptor[] {interceptor,
userEmpowerInterceptor(),
paginationInterceptor()
......
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.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor;
......@@ -9,6 +10,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
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.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
......@@ -29,14 +31,34 @@ import java.util.Properties;
@MapperScan(basePackages = "com.yeejoin.amos.boot.module.hygf.api.tdenginemapper", sqlSessionTemplateRef = "tdengineSqlSessionTemplate")
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";
@Bean(name = "tdengineDataSource")
@ConfigurationProperties(prefix = "spring.datasource.tdengine-service")
public DataSource tdengineDataSource() {
return DataSourceBuilder.create().build();
// 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();
}
@Bean(name = "tdengineSqlSessionFactory")
......
......@@ -229,5 +229,12 @@ dealer.appcode.role=1767363928842571777
dealer.amosDealerId=1767820997374775298
#Seata Config
seata.tx-service-group= jxiop-seata
seata.service.grouplist.jxiop-seata=47.92.234.253:8091
\ No newline at end of file
seata.tx-service-group= hygf-seata
seata.service.grouplist.hygf-seata=47.92.234.253:8091
# Seata 配置
seata.enabled=true
seata.enable-auto-data-source-proxy=false
......@@ -30,7 +30,7 @@ transport {
}
service {
#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
default.grouplist = "47.92.234.253:8091"
#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