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())
.stream()
.map(DataSourceInfo::hostAndPortBuild)
.forEach(dataSourceInfo -> {
dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo));
.map(druidDataSourceFactory::create)
.filter(Objects::nonNull)
.forEach( druidDataSource -> {
dataSourceMap.put(druidDataSource.getName(), druidDataSource);
});
//设置动态数据源
DynamicDataSource dynamicDataSource = new DynamicDataSource();

View File

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

View File

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