diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java new file mode 100644 index 00000000..81b10e7b --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java @@ -0,0 +1,14 @@ +package org.jeecg.common.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "maximum") +public class MaximumPoolSizeProperties { + + private Integer station; + +} diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java index a559dbe6..51ae5e50 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java @@ -4,8 +4,10 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.exception.StreamErrorHandler; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.RedisStreamUtil; import org.jeecg.modules.base.dto.Info; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -46,6 +48,9 @@ public class RedisStreamConfig { @Resource private RedisStreamUtil redisStreamUtil; + @Autowired + private MaximumPoolSizeProperties maximumPoolSizeProperties; + @Bean(initMethod = "start", destroyMethod = "stop") public StreamMessageListenerContainer> alarmStream() { /* 创建Stream和消费组 */ @@ -53,7 +58,7 @@ public class RedisStreamConfig { // 原子整数,多线程环境下对整数的原子性操作 AtomicInteger index = new AtomicInteger(1); // 返回当前系统可用的处理器数量 - Integer processors = Runtime.getRuntime().availableProcessors(); + Integer processors = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); /* corePoolSize:线程池中核心线程的数量,即线程池中保持的最小线程数 maximumPoolSize:线程池中允许的最大线程数 diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java b/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java index 1a4bb92f..3af394fb 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java @@ -3,6 +3,7 @@ package org.jeecg; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.CalculateStationData; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.entity.configuration.GardsStations; import org.jeecg.modules.entity.data.RateParam; @@ -26,6 +27,8 @@ public class DataProvisionEfficiencyManager { private final CalculateStationData calCulateStationData; + private final MaximumPoolSizeProperties maximumPoolSizeProperties; + /** * 开始 */ @@ -44,7 +47,7 @@ public class DataProvisionEfficiencyManager { public void init(){ //获取机器可用核心数 - int systemCores = Runtime.getRuntime().availableProcessors(); + int systemCores = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new CustomizableThreadFactory("provision-efficiency-"); poolExecutor = new ThreadPoolExecutor(systemCores-1,systemCores,5, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),threadFactory); diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java b/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java index 74d684b7..50760a4a 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.CacheName; import org.jeecg.common.config.mqtoken.UserTokenContext; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.entity.original.GardsMetData; @@ -47,6 +48,8 @@ public class DataReceivingStatusManager { private final StationSohDataMapper stationSohDataMapper; + private final MaximumPoolSizeProperties maximumPoolSizeProperties; + public void start() { ReceivingStatusThreadManager receivingStatusManager = new ReceivingStatusThreadManager(); receivingStatusManager.init(); @@ -62,7 +65,7 @@ public class DataReceivingStatusManager { public void init(){ //获取机器可用核心数 - int systemCores = Runtime.getRuntime().availableProcessors(); + int systemCores = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new CustomizableThreadFactory("undeal-file-parsing-"); poolExecutor = new ThreadPoolExecutor(systemCores-1,systemCores,5, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),threadFactory); diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java index 42561b89..4ed0a2d3 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java @@ -1,6 +1,7 @@ package org.jeecg.common; import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.entity.data.*; @@ -25,6 +26,8 @@ public class CalculateStationData { @Autowired private ParameterProperties parameterProperties; @Autowired + private MaximumPoolSizeProperties maximumPoolSizeProperties; + @Autowired private RedisUtil redisUtil; /** @@ -837,7 +840,7 @@ public class CalculateStationData { // 如果线程数不等于0 if (threadNum != 0){ //获取机器可用核心数 - int maximumPoolSize = Runtime.getRuntime().availableProcessors(); + int maximumPoolSize = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new ThreadFactory() { @Override diff --git a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java index e263f0f7..30a22aa7 100644 --- a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java +++ b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java @@ -147,6 +147,7 @@ public class GardsSampleDataWebServiceImpl extends ServiceImpl