diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java new file mode 100644 index 0000000..236d51a --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java @@ -0,0 +1,67 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:04 + */ +public class BusDruidDataSource extends DruidDataSource { + private boolean lastInited; + + private String[] urls; + + public String[] getUrls() { + return urls; + } + + public void setUrls(String[] urls) { + this.urls = urls; + } + + @Override + public void init() throws SQLException { + lastInited = inited; + super.init(); + if (!lastInited && inited) { + new Thread(new ValidateUrlTask()).start(); + } + } + + class ValidateUrlTask implements Runnable { + @Override + public void run() { + while (true) { + //如果整个数据源被关闭了,就结束这个定时任务 + if (isClosed()) { + break; + } + //如果这个数据源已经被初始化了,同时连接异常才进行处理 + if (isInited() && isFailContinuous()) { + for (String thisUrl : urls) { + Connection connection = null; + try { + connection = DriverManager.getConnection(thisUrl, username, password); + jdbcUrl = thisUrl; + } catch (Exception ignored) { + } finally { + try { + connection.close(); + } catch (Exception ignored) { + } + } + } + } + try { + Thread.sleep(5000); //5秒执行一次while + } catch (InterruptedException ignored) { + } + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java new file mode 100644 index 0000000..236d51a --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java @@ -0,0 +1,67 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:04 + */ +public class BusDruidDataSource extends DruidDataSource { + private boolean lastInited; + + private String[] urls; + + public String[] getUrls() { + return urls; + } + + public void setUrls(String[] urls) { + this.urls = urls; + } + + @Override + public void init() throws SQLException { + lastInited = inited; + super.init(); + if (!lastInited && inited) { + new Thread(new ValidateUrlTask()).start(); + } + } + + class ValidateUrlTask implements Runnable { + @Override + public void run() { + while (true) { + //如果整个数据源被关闭了,就结束这个定时任务 + if (isClosed()) { + break; + } + //如果这个数据源已经被初始化了,同时连接异常才进行处理 + if (isInited() && isFailContinuous()) { + for (String thisUrl : urls) { + Connection connection = null; + try { + connection = DriverManager.getConnection(thisUrl, username, password); + jdbcUrl = thisUrl; + } catch (Exception ignored) { + } finally { + try { + connection.close(); + } catch (Exception ignored) { + } + } + } + } + try { + Thread.sleep(5000); //5秒执行一次while + } catch (InterruptedException ignored) { + } + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java new file mode 100644 index 0000000..0fadb64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java @@ -0,0 +1,70 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:06 + */ +@Configuration +@Data +public class DruidConfig { + @Value("${spring.datasource.url}") + private String url; + @Value("${spring.datasource.username}") + private String username; + @Value("${spring.datasource.password}") + private String password; + @Value("${spring.datasource.driver-class-name}") + private String driverClassName; + @Value("${spring.datasource.urls}") + private String[] urls; + +// //初始化时建立物理连接的个数,默认:0 +// @Value("${spring.datasource.druid.initial-size}") +// private int initialSize; + +// @Value("${spring.datasource.druid.filters}") +// private String filters; +// //连接池最大活跃数量,默认:8 +// @Value("${spring.datasource.druid.max-active}") +// private int maxActive; +// //最小连接池数量 +// @Value("${spring.datasource.druid.min-idle}") +// private int minIdle; +// //用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x' +// @Value("${spring.datasource.druid.validation-query}") +// private String validationQuery; +// @Value("${spring.datasource.druid.test-while-idle}") +// private boolean testWhileIdle; +// @Value("${spring.datasource.druid.max-wait}") +// private int maxWait; +// @Value("${spring.datasource.druid.time-between-eviction-runs-millis}") +// private int timeBetweenEvictionRunsMillis; + + @Bean + public DruidDataSource druidDataSource() throws SQLException { + BusDruidDataSource dataSource = new BusDruidDataSource(); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setDriverClassName(driverClassName); + dataSource.setUrls(urls); +// dataSource.setFilters(filters); +// dataSource.setMaxActive(maxActive); +// dataSource.setInitialSize(initialSize); +// dataSource.setMinIdle(minIdle); +// dataSource.setValidationQuery(validationQuery); +// dataSource.setTestWhileIdle(testWhileIdle); +// dataSource.setMaxWait(maxWait); +// dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + return dataSource; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java new file mode 100644 index 0000000..236d51a --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java @@ -0,0 +1,67 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:04 + */ +public class BusDruidDataSource extends DruidDataSource { + private boolean lastInited; + + private String[] urls; + + public String[] getUrls() { + return urls; + } + + public void setUrls(String[] urls) { + this.urls = urls; + } + + @Override + public void init() throws SQLException { + lastInited = inited; + super.init(); + if (!lastInited && inited) { + new Thread(new ValidateUrlTask()).start(); + } + } + + class ValidateUrlTask implements Runnable { + @Override + public void run() { + while (true) { + //如果整个数据源被关闭了,就结束这个定时任务 + if (isClosed()) { + break; + } + //如果这个数据源已经被初始化了,同时连接异常才进行处理 + if (isInited() && isFailContinuous()) { + for (String thisUrl : urls) { + Connection connection = null; + try { + connection = DriverManager.getConnection(thisUrl, username, password); + jdbcUrl = thisUrl; + } catch (Exception ignored) { + } finally { + try { + connection.close(); + } catch (Exception ignored) { + } + } + } + } + try { + Thread.sleep(5000); //5秒执行一次while + } catch (InterruptedException ignored) { + } + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java new file mode 100644 index 0000000..0fadb64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java @@ -0,0 +1,70 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:06 + */ +@Configuration +@Data +public class DruidConfig { + @Value("${spring.datasource.url}") + private String url; + @Value("${spring.datasource.username}") + private String username; + @Value("${spring.datasource.password}") + private String password; + @Value("${spring.datasource.driver-class-name}") + private String driverClassName; + @Value("${spring.datasource.urls}") + private String[] urls; + +// //初始化时建立物理连接的个数,默认:0 +// @Value("${spring.datasource.druid.initial-size}") +// private int initialSize; + +// @Value("${spring.datasource.druid.filters}") +// private String filters; +// //连接池最大活跃数量,默认:8 +// @Value("${spring.datasource.druid.max-active}") +// private int maxActive; +// //最小连接池数量 +// @Value("${spring.datasource.druid.min-idle}") +// private int minIdle; +// //用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x' +// @Value("${spring.datasource.druid.validation-query}") +// private String validationQuery; +// @Value("${spring.datasource.druid.test-while-idle}") +// private boolean testWhileIdle; +// @Value("${spring.datasource.druid.max-wait}") +// private int maxWait; +// @Value("${spring.datasource.druid.time-between-eviction-runs-millis}") +// private int timeBetweenEvictionRunsMillis; + + @Bean + public DruidDataSource druidDataSource() throws SQLException { + BusDruidDataSource dataSource = new BusDruidDataSource(); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setDriverClassName(driverClassName); + dataSource.setUrls(urls); +// dataSource.setFilters(filters); +// dataSource.setMaxActive(maxActive); +// dataSource.setInitialSize(initialSize); +// dataSource.setMinIdle(minIdle); +// dataSource.setValidationQuery(validationQuery); +// dataSource.setTestWhileIdle(testWhileIdle); +// dataSource.setMaxWait(maxWait); +// dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + return dataSource; + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e6a722b..c7f8588 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,8 +3,10 @@ ################### spring配置 ################### spring: datasource: -# driver-class-name: com.mysql.cj.jdbc.Driver + driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true + urls: jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true, + jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203! redis: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java new file mode 100644 index 0000000..236d51a --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/BusDruidDataSource.java @@ -0,0 +1,67 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:04 + */ +public class BusDruidDataSource extends DruidDataSource { + private boolean lastInited; + + private String[] urls; + + public String[] getUrls() { + return urls; + } + + public void setUrls(String[] urls) { + this.urls = urls; + } + + @Override + public void init() throws SQLException { + lastInited = inited; + super.init(); + if (!lastInited && inited) { + new Thread(new ValidateUrlTask()).start(); + } + } + + class ValidateUrlTask implements Runnable { + @Override + public void run() { + while (true) { + //如果整个数据源被关闭了,就结束这个定时任务 + if (isClosed()) { + break; + } + //如果这个数据源已经被初始化了,同时连接异常才进行处理 + if (isInited() && isFailContinuous()) { + for (String thisUrl : urls) { + Connection connection = null; + try { + connection = DriverManager.getConnection(thisUrl, username, password); + jdbcUrl = thisUrl; + } catch (Exception ignored) { + } finally { + try { + connection.close(); + } catch (Exception ignored) { + } + } + } + } + try { + Thread.sleep(5000); //5秒执行一次while + } catch (InterruptedException ignored) { + } + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java new file mode 100644 index 0000000..0fadb64 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/config/druid/DruidConfig.java @@ -0,0 +1,70 @@ +package com.casic.missiles.config.druid; + +import com.alibaba.druid.pool.DruidDataSource; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.sql.SQLException; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/6/16 18:06 + */ +@Configuration +@Data +public class DruidConfig { + @Value("${spring.datasource.url}") + private String url; + @Value("${spring.datasource.username}") + private String username; + @Value("${spring.datasource.password}") + private String password; + @Value("${spring.datasource.driver-class-name}") + private String driverClassName; + @Value("${spring.datasource.urls}") + private String[] urls; + +// //初始化时建立物理连接的个数,默认:0 +// @Value("${spring.datasource.druid.initial-size}") +// private int initialSize; + +// @Value("${spring.datasource.druid.filters}") +// private String filters; +// //连接池最大活跃数量,默认:8 +// @Value("${spring.datasource.druid.max-active}") +// private int maxActive; +// //最小连接池数量 +// @Value("${spring.datasource.druid.min-idle}") +// private int minIdle; +// //用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x' +// @Value("${spring.datasource.druid.validation-query}") +// private String validationQuery; +// @Value("${spring.datasource.druid.test-while-idle}") +// private boolean testWhileIdle; +// @Value("${spring.datasource.druid.max-wait}") +// private int maxWait; +// @Value("${spring.datasource.druid.time-between-eviction-runs-millis}") +// private int timeBetweenEvictionRunsMillis; + + @Bean + public DruidDataSource druidDataSource() throws SQLException { + BusDruidDataSource dataSource = new BusDruidDataSource(); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setDriverClassName(driverClassName); + dataSource.setUrls(urls); +// dataSource.setFilters(filters); +// dataSource.setMaxActive(maxActive); +// dataSource.setInitialSize(initialSize); +// dataSource.setMinIdle(minIdle); +// dataSource.setValidationQuery(validationQuery); +// dataSource.setTestWhileIdle(testWhileIdle); +// dataSource.setMaxWait(maxWait); +// dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + return dataSource; + } +} diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml index e6a722b..c7f8588 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-dev.yml @@ -3,8 +3,10 @@ ################### spring配置 ################### spring: datasource: -# driver-class-name: com.mysql.cj.jdbc.Driver + driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true + urls: jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true, + jdbc:mysql://111.198.10.15:21906/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Casic203! redis: diff --git a/casic-metering-eqpt-api/src/main/resources/config/application-prod.yml b/casic-metering-eqpt-api/src/main/resources/config/application-prod.yml index 2ddef45..adc46a3 100644 --- a/casic-metering-eqpt-api/src/main/resources/config/application-prod.yml +++ b/casic-metering-eqpt-api/src/main/resources/config/application-prod.yml @@ -7,15 +7,25 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://27.99.50.209:11336/casic_metering_xichang?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&nullCatalogMeansCurrent=true + url: jdbc:mysql://27.99.50.209:3306/casic_metering_xichang?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&nullCatalogMeansCurrent=true + urls: jdbc:mysql://27.99.50.209:3306/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true, + jdbc:mysql://28.41.126.137:3306/casic_metering_xichang?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&nullCatalogMeansCurrent=true username: root password: Admin!123 redis: - host: 27.99.50.209 - port: 6379 - database: 1 - serializer: org.springframework.data.redis.serializer.StringRedisSerializer - redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer + sentinel: + master: mymaster + nodes: + - host: 27.99.50.209 + port: 26379 + - host: 28.41.126.137 + port: 26379 + # host: 27.99.50.209 + # port: 6379 + # password: ew5T4K3#203lwh + database: 1 + serializer: org.springframework.data.redis.serializer.StringRedisSerializer + redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer session: store-type: redis