fix(): 修复数据源启动因空数据源导致程序启动失败的问题

dev.saas.RedisCar
DongZeLiang 2024-10-08 14:28:42 +08:00
parent e4fa985e2f
commit 9b41098f32
3 changed files with 9 additions and 4 deletions

View File

@ -71,8 +71,10 @@ public class ManyDataSource implements ApplicationRunner{
Objects.requireNonNull(dataSourceInfoList()) Objects.requireNonNull(dataSourceInfoList())
.stream() .stream()
.map(DataSourceInfo::hostAndPortBuild) .map(DataSourceInfo::hostAndPortBuild)
.forEach(dataSourceInfo -> { .map(druidDataSourceFactory::create)
dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo)); .filter(Objects::nonNull)
.forEach( druidDataSource -> {
dataSourceMap.put(druidDataSource.getName(), druidDataSource);
}); });
//设置动态数据源 //设置动态数据源
DynamicDataSource dynamicDataSource = new DynamicDataSource(); DynamicDataSource dynamicDataSource = new DynamicDataSource();

View File

@ -1,6 +1,7 @@
package com.muyu.cloud.common.many.datasource.factory; package com.muyu.cloud.common.many.datasource.factory;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -23,6 +24,7 @@ public class DruidDataSourceFactory {
*/ */
public DruidDataSource create(DataSourceInfo dataSourceInfo) { public DruidDataSource create(DataSourceInfo dataSourceInfo) {
DruidDataSource druidDataSource = new DruidDataSource(); DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setName(dataSourceInfo.getKey());
druidDataSource.setUrl(dataSourceInfo.getUrl()); druidDataSource.setUrl(dataSourceInfo.getUrl());
druidDataSource.setConnectTimeout(10000); druidDataSource.setConnectTimeout(10000);
druidDataSource.setMaxWait(60000); druidDataSource.setMaxWait(60000);
@ -31,8 +33,9 @@ public class DruidDataSourceFactory {
druidDataSource.setBreakAfterAcquireFailure(true); druidDataSource.setBreakAfterAcquireFailure(true);
druidDataSource.setConnectionErrorRetryAttempts(0); druidDataSource.setConnectionErrorRetryAttempts(0);
try { try {
druidDataSource.getConnection(2000); DruidPooledConnection connection = druidDataSource.getConnection(2000);
log.info("{} -> 数据源连接成功", dataSourceInfo.getKey()); log.info("{} -> 数据源连接成功", dataSourceInfo.getKey());
connection.close();
return druidDataSource; return druidDataSource;
} catch (SQLException throwables) { } catch (SQLException throwables) {
log.error("数据源 {} 连接失败,用户名:{},密码 {}, 原因:{}",dataSourceInfo.getUrl(),dataSourceInfo.getUserName(),dataSourceInfo.getPassword(), throwables); log.error("数据源 {} 连接失败,用户名:{},密码 {}, 原因:{}",dataSourceInfo.getUrl(),dataSourceInfo.getUserName(),dataSourceInfo.getPassword(), throwables);

View File

@ -1,6 +1,6 @@
# Tomcat # Tomcat
server: server:
port: 8080 port: 8081
# nacos线上地址 # nacos线上地址
nacos: nacos: