- 后端:调整 order 项目,本地开发不开启文档
- 后端:order 项目,引入 seata 分布式事务
This commit is contained in:
parent
f77e577955
commit
21e5fb954a
@ -0,0 +1,6 @@
|
|||||||
|
swagger:
|
||||||
|
enable: true
|
||||||
|
title: 订单子系统
|
||||||
|
description: 订单子系统
|
||||||
|
version: 1.0.0
|
||||||
|
base-package: cn.iocoder.mall.pay.application.controller
|
@ -9,7 +9,4 @@ server:
|
|||||||
context-path: /order-api/
|
context-path: /order-api/
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
title: 订单子系统
|
enable: false
|
||||||
description: 订单子系统
|
|
||||||
version: 1.0.0
|
|
||||||
base-package: cn.iocoder.mall.pay.application.controller
|
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
|
|
||||||
<configuration>
|
|
||||||
|
|
||||||
<settings>
|
|
||||||
<!-- 使用驼峰命名法转换字段。 -->
|
|
||||||
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
|
||||||
</settings>
|
|
||||||
|
|
||||||
<typeAliases>
|
|
||||||
<typeAlias alias="Integer" type="java.lang.Integer"/>
|
|
||||||
<typeAlias alias="Long" type="java.lang.Long"/>
|
|
||||||
<typeAlias alias="HashMap" type="java.util.HashMap"/>
|
|
||||||
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
|
|
||||||
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
|
|
||||||
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
|
|
||||||
</typeAliases>
|
|
||||||
|
|
||||||
</configuration>
|
|
@ -1,15 +1,15 @@
|
|||||||
package cn.iocoder.mall.order.biz.config;
|
package cn.iocoder.mall.order.biz.config;
|
||||||
|
|
||||||
import com.alibaba.druid.pool.DruidDataSource;
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
|
||||||
import io.seata.rm.datasource.DataSourceProxy;
|
import io.seata.rm.datasource.DataSourceProxy;
|
||||||
import io.seata.spring.annotation.GlobalTransactionScanner;
|
import io.seata.spring.annotation.GlobalTransactionScanner;
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
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.DependsOn;
|
||||||
import org.springframework.context.annotation.Primary;
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
|
|
||||||
@ -20,56 +20,29 @@ import javax.sql.DataSource;
|
|||||||
@EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理。为什么使用 proxyTargetClass 参数,参见 https://blog.csdn.net/huang_550/article/details/76492600
|
@EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理。为什么使用 proxyTargetClass 参数,参见 https://blog.csdn.net/huang_550/article/details/76492600
|
||||||
public class DatabaseConfiguration {
|
public class DatabaseConfiguration {
|
||||||
|
|
||||||
// 数据源,使用 HikariCP
|
|
||||||
|
|
||||||
@Value("${spring.application.name}")
|
@Value("${spring.application.name}")
|
||||||
private String applicationId;
|
private String applicationId;
|
||||||
|
@Value("${seata.tx-service-group}")
|
||||||
|
private String txServiceGroup;
|
||||||
|
|
||||||
@Autowired
|
@Bean("druidDataSource")
|
||||||
private DataSourceProperties dataSourceProperties;
|
@ConfigurationProperties("spring.datasource.druid")
|
||||||
|
|
||||||
@Bean
|
|
||||||
// @Primary
|
|
||||||
public DruidDataSource druidDataSource(){
|
public DruidDataSource druidDataSource(){
|
||||||
DruidDataSource druidDataSource = new DruidDataSource();
|
return DruidDataSourceBuilder.create().build();
|
||||||
druidDataSource.setUrl(dataSourceProperties.getUrl());
|
|
||||||
druidDataSource.setUsername(dataSourceProperties.getUsername());
|
|
||||||
druidDataSource.setPassword(dataSourceProperties.getPassword());
|
|
||||||
druidDataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
|
|
||||||
druidDataSource.setInitialSize(0);
|
|
||||||
druidDataSource.setMaxActive(180);
|
|
||||||
druidDataSource.setMaxWait(60000);
|
|
||||||
druidDataSource.setMinIdle(0);
|
|
||||||
druidDataSource.setValidationQuery("Select 1 from DUAL");
|
|
||||||
druidDataSource.setTestOnBorrow(false);
|
|
||||||
druidDataSource.setTestOnReturn(false);
|
|
||||||
druidDataSource.setTestWhileIdle(true);
|
|
||||||
druidDataSource.setTimeBetweenEvictionRunsMillis(60000);
|
|
||||||
druidDataSource.setMinEvictableIdleTimeMillis(25200000);
|
|
||||||
druidDataSource.setRemoveAbandoned(true);
|
|
||||||
druidDataSource.setRemoveAbandonedTimeout(1800);
|
|
||||||
druidDataSource.setLogAbandoned(true);
|
|
||||||
return druidDataSource;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ConfigurationProperties(prefix = "spring.datasource")
|
@ConfigurationProperties(prefix = "spring.datasource")
|
||||||
@Primary
|
@Primary
|
||||||
@Bean("dataSource")
|
@Bean("dataSource")
|
||||||
// @Bean
|
@DependsOn("druidDataSource") // 解决多数据源,循环依赖的问题。主要发生点在 DataSourceInitializerInvoker
|
||||||
public DataSource dataSource(DruidDataSource dataSource) {
|
public DataSource dataSource() {
|
||||||
return new DataSourceProxy(dataSource);
|
DruidDataSource druidDataSource = druidDataSource();
|
||||||
|
return new DataSourceProxy(druidDataSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 注册一个StatViewServlet
|
|
||||||
*
|
|
||||||
* @return global transaction scanner
|
|
||||||
*/
|
|
||||||
@Bean
|
@Bean
|
||||||
public GlobalTransactionScanner globalTransactionScanner() {
|
public GlobalTransactionScanner globalTransactionScanner() {
|
||||||
return new GlobalTransactionScanner(applicationId, "my_test_tx_group");
|
return new GlobalTransactionScanner(applicationId, txServiceGroup);
|
||||||
// TODO 芋艿,txServiceGroup 后续要编辑下
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
package cn.iocoder.mall.order.biz.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class SeataConfiguration {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -59,3 +59,7 @@ logging:
|
|||||||
level:
|
level:
|
||||||
# dao 开启 debug 模式 mybatis 输入 sql
|
# dao 开启 debug 模式 mybatis 输入 sql
|
||||||
cn.iocoder.mall.order.biz.dao: debug
|
cn.iocoder.mall.order.biz.dao: debug
|
||||||
|
|
||||||
|
# seata
|
||||||
|
seata:
|
||||||
|
tx-service-group: my_test_tx_group
|
||||||
|
69
order/order-service-impl/src/main/resources/file.conf
Normal file
69
order/order-service-impl/src/main/resources/file.conf
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
transport {
|
||||||
|
# tcp udt unix-domain-socket
|
||||||
|
type = "TCP"
|
||||||
|
#NIO NATIVE
|
||||||
|
server = "NIO"
|
||||||
|
#enable heartbeat
|
||||||
|
heartbeat = true
|
||||||
|
#thread factory for netty
|
||||||
|
thread-factory {
|
||||||
|
boss-thread-prefix = "NettyBoss"
|
||||||
|
worker-thread-prefix = "NettyServerNIOWorker"
|
||||||
|
server-executor-thread-prefix = "NettyServerBizHandler"
|
||||||
|
share-boss-worker = false
|
||||||
|
client-selector-thread-prefix = "NettyClientSelector"
|
||||||
|
client-selector-thread-size = 1
|
||||||
|
client-worker-thread-prefix = "NettyClientWorkerThread"
|
||||||
|
# netty boss thread size,will not be used for UDT
|
||||||
|
boss-thread-size = 1
|
||||||
|
#auto default pin or 8
|
||||||
|
worker-thread-size = 8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
#vgroup->rgroup
|
||||||
|
vgroup_mapping.my_test_tx_group = "default"
|
||||||
|
#only support single node
|
||||||
|
default.grouplist = "180.167.213.26:8091"
|
||||||
|
#degrade current not support
|
||||||
|
enableDegrade = false
|
||||||
|
#disable
|
||||||
|
disable = false
|
||||||
|
}
|
||||||
|
|
||||||
|
client {
|
||||||
|
async.commit.buffer.limit = 10000
|
||||||
|
lock {
|
||||||
|
retry.internal = 10
|
||||||
|
retry.times = 30
|
||||||
|
}
|
||||||
|
}
|
||||||
|
## transaction log store
|
||||||
|
store {
|
||||||
|
## store mode: file、db
|
||||||
|
mode = "file"
|
||||||
|
|
||||||
|
## file store
|
||||||
|
file {
|
||||||
|
dir = "file_store/data"
|
||||||
|
|
||||||
|
# branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
|
||||||
|
max-branch-session-size = 16384
|
||||||
|
# globe session size , if exceeded throws exceptions
|
||||||
|
max-global-session-size = 512
|
||||||
|
# file buffer size , if exceeded allocate new buffer
|
||||||
|
file-write-buffer-cache-size = 16384
|
||||||
|
# when recover batch read size
|
||||||
|
session.reload.read_size = 100
|
||||||
|
}
|
||||||
|
|
||||||
|
## database store
|
||||||
|
db {
|
||||||
|
driver_class = ""
|
||||||
|
url = ""
|
||||||
|
user = ""
|
||||||
|
password = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
14
order/order-service-impl/src/main/resources/registry.conf
Normal file
14
order/order-service-impl/src/main/resources/registry.conf
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
registry {
|
||||||
|
type = "file"
|
||||||
|
|
||||||
|
file {
|
||||||
|
name = "file.conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
zk {
|
||||||
|
cluster = "default"
|
||||||
|
serverAddr = "192.168.88.10:2181"
|
||||||
|
session.timeout = 6000
|
||||||
|
connect.timeout = 2000
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user