Skip to content

Commit

Permalink
perf($MyBatisPlus): refine dynamic database connection pool
Browse files Browse the repository at this point in the history
  • Loading branch information
johnnymillergh committed Oct 2, 2021
1 parent 85cd639 commit 0a49320
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 102 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.alibaba.druid.util.JdbcUtils;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.plugin.MasterSlaveAutoRoutingPlugin;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceCreatorAutoConfiguration;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import lombok.SneakyThrows;
Expand All @@ -14,7 +15,6 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
import org.springframework.boot.autoconfigure.quartz.QuartzTransactionManager;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
Expand All @@ -28,14 +28,8 @@
* @author Johnny Miller (锺俊), email: johnnysviva@outlook.com, date: 6/27/2021 8:15 AM
**/
@Slf4j
@ConditionalOnClass({MybatisPlusAutoConfiguration.class})
@ConditionalOnClass({MybatisPlusAutoConfiguration.class, DynamicDataSourceCreatorAutoConfiguration.class})
public class DataSourceConfiguration {
@Bean
public DruidDataSourceCreatorPostProcessor druidDataSourceCreatorPostProcessor(ApplicationContext applicationContext, DynamicDataSourceProperties dynamicDataSourceProperties) {
log.warn("Initial bean: '{}'", DruidDataSourceCreatorPostProcessor.class.getSimpleName());
return new DruidDataSourceCreatorPostProcessor(applicationContext, dynamicDataSourceProperties);
}

/**
* Primary data source. Had to configure DynamicRoutingDataSource as primary. Otherwise
* MasterSlaveAutoRoutingPlugin will not be able to be injected datasource correctly.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.jmsoftware.maf.springcloudstarter.database;

import com.baomidou.dynamic.datasource.plugin.MasterSlaveAutoRoutingPlugin;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourcePropertiesCustomizer;
import com.baomidou.dynamic.datasource.support.DdConstants;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
Expand Down Expand Up @@ -84,4 +85,20 @@ public CommonMetaObjectHandler commonMetaObjectHandler() {
log.warn("Initial bean: '{}'", CommonMetaObjectHandler.class.getSimpleName());
return new CommonMetaObjectHandler();
}

@Bean
public DynamicDataSourcePropertiesCustomizer dynamicDataSourcePropertiesCustomizer() {
return dynamicDataSourceProperties -> {
val cpuCoreCount = Runtime.getRuntime().availableProcessors();
val minConnectionPoolSize = cpuCoreCount * 2 + 1;
val maxConnectionPoolSize = cpuCoreCount * 3;
dynamicDataSourceProperties.getDruid()
.setInitialSize(minConnectionPoolSize)
.setMinIdle(minConnectionPoolSize)
.setMaxActive(maxConnectionPoolSize);
log.warn("Druid connection pool enhanced by current cpuCoreCount: {}, initial size: {}, min idle: {}" +
", max active: {}",
cpuCoreCount, minConnectionPoolSize, minConnectionPoolSize, maxConnectionPoolSize);
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
@Validated
@ConfigurationProperties(prefix = MafProjectProperties.PREFIX)
public class MafProjectProperties {
public static final String PREFIX = "maf.project-property";
public static final String PREFIX = "maf.project-properties";
private final BuildProperties buildProperties;
/**
* The Base package.
Expand Down

0 comments on commit 0a49320

Please sign in to comment.