diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java index 38ce726a6..2e0ccd498 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java @@ -3,6 +3,7 @@ package org.nl; import cn.dev33.satoken.annotation.SaIgnore; import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation; import com.alicp.jetcache.anno.config.EnableMethodCache; +import org.dromara.dynamictp.core.spring.EnableDynamicTp; import org.mybatis.spring.annotation.MapperScan; import org.nl.config.SpringContextHolder; import org.springframework.boot.SpringApplication; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController; */ @EnableAsync @RestController +@EnableDynamicTp @SpringBootApplication(exclude = { QuartzAutoConfiguration.class, org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class @@ -33,6 +35,7 @@ import org.springframework.web.bind.annotation.RestController; @EnableMethodCache(basePackages = "org.nl") @EnableCreateCacheAnnotation @MapperScan("org.nl.**.mapper") + public class AppRun { public static void main(String[] args) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 0a6972572..0832349e9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -69,7 +69,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - final ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); TwoAgvPhase twoAgvPhase = new TwoAgvPhase(); String error_code = "0"; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java index 0c5a6911b..fa33818d6 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_storage_out_conveyor/BoxStorageOutConveyorDeviceDriver.java @@ -45,7 +45,6 @@ import org.nl.config.thread.ThreadPoolExecutorUtil; import org.openscada.opc.lib.da.Server; import java.util.*; -import java.util.concurrent.ThreadPoolExecutor; /** * 一楼木箱入库站点 @@ -54,7 +53,6 @@ import java.util.concurrent.ThreadPoolExecutor; @Data @RequiredArgsConstructor public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDeviceDriver.java index 0d8616910..f6ecfd3d2 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/box_subvolumes_conveyor/BoxSubvolumesConveyorDeviceDriver.java @@ -44,6 +44,7 @@ import org.nl.system.service.param.ISysParamService; import org.openscada.opc.lib.da.Server; import java.util.*; +import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; /** @@ -53,7 +54,7 @@ import java.util.concurrent.ThreadPoolExecutor; @Data @RequiredArgsConstructor public class BoxSubvolumesConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); + private final static Executor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java index 7398be39b..43585d2ef 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/finished_product_out_with_bind_lable_conveyor/FinishedProductOutBindLableDeviceDriver.java @@ -53,7 +53,6 @@ import java.util.concurrent.ThreadPoolExecutor; @Data @RequiredArgsConstructor public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/manipulator_cache/ManipulatorCacheDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/manipulator_cache/ManipulatorCacheDeviceDriver.java index 9fcc854c4..c3dd59eb2 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/manipulator_cache/ManipulatorCacheDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/manipulator_cache/ManipulatorCacheDeviceDriver.java @@ -26,7 +26,6 @@ import java.util.concurrent.ThreadPoolExecutor; @Slf4j @Data public class ManipulatorCacheDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); protected ItemProtocol itemProtocol = new ItemProtocol(this); //当前指令 diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDeviceDriver.java index 37bf7ca51..e9bf657d8 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/one_conveyor/un_box_lable_conveyor/UnBoxLableConveyorDeviceDriver.java @@ -51,7 +51,6 @@ import java.util.concurrent.ThreadPoolExecutor; @Data @RequiredArgsConstructor public class UnBoxLableConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java index c7bca193b..d4c453b01 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java @@ -48,7 +48,7 @@ import org.nl.config.thread.ThreadPoolExecutorUtil; import org.springframework.beans.factory.annotation.Autowired; import java.util.*; -import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.Executor; /** * 烘箱-行架机械手 @@ -79,7 +79,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i @Autowired LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - final ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); + final Executor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); //工作模式 int mode = 0; @@ -464,12 +464,12 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i list.add(map3); this.writing(list); if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toOpenDoor(startdevice); }); } if (nextdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toOpenDoor(nextdevice); }); } @@ -672,12 +672,12 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i list.add(map3); this.writing(list); if (startdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toOpenDoor(startdevice); }); } if (nextdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toOpenDoor(nextdevice); }); } @@ -938,7 +938,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toCloseDoor(device); }); } @@ -1040,7 +1040,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i LampThreecolorDeviceDriver lampThreecolorDeviceDriver; if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); - EXECUTOR.submit(() -> { + EXECUTOR.execute(() -> { toCloseDoor(nextDevice); }); if (StrUtil.isNotEmpty(taskDto.getOven_time())) { diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java index 2ec20e74e..88e66cf34 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java @@ -7,9 +7,12 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.config.thread.TheadFactoryName; +import org.nl.config.thread.ThreadPoolExecutorUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.*; @@ -30,7 +33,10 @@ public class DeviceExecuteAutoRun extends AbstractAutoRunnable { int multiple = cache_thread; int loop_time_millions = 100; - ExecutorService executorService; + + @Resource + private ThreadPoolExecutor executorService; + Map runs; public DeviceExecuteAutoRun() { @@ -43,7 +49,7 @@ public class DeviceExecuteAutoRun extends AbstractAutoRunnable { new ArrayBlockingQueue<>( queueLength), new TheadFactoryName() );*/ - this.executorService = new ThreadPoolExecutor( + /*this.executorService = new ThreadPoolExecutor( 50, 100, 1L, @@ -62,7 +68,8 @@ public class DeviceExecuteAutoRun extends AbstractAutoRunnable { } } } - ); + );*/ +// this.executorService= ThreadPoolExecutorUtil.getPoll(); this.runs = new LinkedHashMap(); this.runs = Collections.synchronizedMap(this.runs); } @@ -121,7 +128,7 @@ public class DeviceExecuteAutoRun extends AbstractAutoRunnable { this.runs.put(deviceDriver.getDeviceCode(), runnable); } runnable.setIndex(this.runs); - this.executorService.submit(runnable); + this.executorService.execute(runnable); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java index 65f5d3f38..f9023e4c5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java @@ -1,18 +1,24 @@ package org.nl.acs.opc; import cn.hutool.core.util.ObjectUtil; +import org.dromara.dynamictp.core.support.ThreadPoolBuilder; import org.nl.acs.auto.run.AbstractAutoRunnable; import org.nl.acs.opc.service.dto.OpcServerManageDto; import org.nl.config.thread.TheadFactoryName; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import static org.dromara.dynamictp.common.em.QueueTypeEnum.MEMORY_SAFE_LINKED_BLOCKING_QUEUE; /** * OPC设备同步启动 @@ -22,7 +28,16 @@ import java.util.concurrent.Executors; public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { public static boolean isRun = false; - ExecutorService executorService = Executors.newCachedThreadPool(); + ExecutorService executorService = ThreadPoolBuilder.newBuilder() + .threadPoolName("deviceOpc_thread") + .threadFactory("deviceOpc_thread") + .corePoolSize(2) + .maximumPoolSize(7) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); + @Autowired private DeviceAppService deviceAppService; @Autowired @@ -80,6 +95,14 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { public void after() { isRun = false; this.executorService.shutdownNow(); - this.executorService = Executors.newCachedThreadPool(); + this.executorService = ThreadPoolBuilder.newBuilder() + .threadPoolName("deviceOpc_thread") + .threadFactory("deviceOpc_thread") + .corePoolSize(2) + .maximumPoolSize(7) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/socket/SocketListenerAutoRun.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/socket/SocketListenerAutoRun.java index 119fc6239..05f26848f 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/socket/SocketListenerAutoRun.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/socket/SocketListenerAutoRun.java @@ -1,6 +1,7 @@ package org.nl.acs.socket; import cn.hutool.core.util.StrUtil; +import org.dromara.dynamictp.core.support.ThreadPoolBuilder; import org.nl.acs.auto.run.AbstractAutoRunnable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +15,9 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import static org.dromara.dynamictp.common.em.QueueTypeEnum.MEMORY_SAFE_LINKED_BLOCKING_QUEUE; /** * @author 20220102CG\noblelift @@ -22,7 +26,15 @@ import java.util.concurrent.Executors; public class SocketListenerAutoRun extends AbstractAutoRunnable implements SocketService { private static final Logger log = LoggerFactory.getLogger(SocketListenerAutoRun.class); private ServerSocket serverSocket = null; - private ExecutorService threadPool = Executors.newCachedThreadPool(); + private ExecutorService threadPool = ThreadPoolBuilder.newBuilder() + .threadPoolName("socketListener_thread") + .threadFactory("socketListener_thread") + .corePoolSize(2) + .maximumPoolSize(7) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); private Map sockets = new HashMap(); private Map outputs = new HashMap(); @@ -91,7 +103,15 @@ public class SocketListenerAutoRun extends AbstractAutoRunnable implements Socke public void after() { System.out.println("清理工作。。。。。"); this.threadPool.shutdownNow(); - this.threadPool = Executors.newCachedThreadPool(); + this.threadPool = ThreadPoolBuilder.newBuilder() + .threadPoolName("socketListener_thread") + .threadFactory("socketListener_thread") + .corePoolSize(2) + .maximumPoolSize(7) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); this.sockets = new HashMap(); this.outputs = new HashMap(); this.closeSocket(this.serverSocket); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java index c7f5954c7..ab73632f1 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java @@ -16,10 +16,12 @@ package org.nl.config.thread; +import org.dromara.dynamictp.core.DtpRegistry; import org.nl.config.SpringContextHolder; import org.springframework.stereotype.Component; import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -31,8 +33,11 @@ import java.util.concurrent.TimeUnit; public class ThreadPoolExecutorUtil { - public static ThreadPoolExecutor getPoll(){ - AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); + public static Executor getPoll(){ + + return DtpRegistry.getExecutor("dtpExecutor1"); + + /* AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); return new ThreadPoolExecutor( properties.getCorePoolSize(), properties.getMaxPoolSize(), @@ -40,6 +45,6 @@ public class ThreadPoolExecutorUtil { TimeUnit.SECONDS, new ArrayBlockingQueue<>(properties.getQueueCapacity()), new TheadFactoryName() - ); + );*/ } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java index a646e42b0..da5af0594 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java @@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.RedisUtils; import org.nl.common.utils.ThrowableUtil; import org.nl.config.SpringContextHolder; +import org.nl.config.thread.AsyncTaskProperties; +import org.nl.config.thread.TheadFactoryName; import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.system.service.quartz.ISysQuartzJobService; import org.nl.system.service.quartz.dao.SysQuartzJob; @@ -21,8 +23,10 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.quartz.QuartzJobBean; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Future; import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * @Author: / @@ -41,8 +45,16 @@ public class ExecutionJob extends TLogQuartzJobBean { /* @Autowired @Qualifier("threadPoolExecutor") private ThreadPoolExecutor EXECUTOR;*/ + static AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); + private final static ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor( + properties.getCorePoolSize(), + properties.getMaxPoolSize(), + properties.getKeepAliveSeconds(), + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(properties.getQueueCapacity()), + new TheadFactoryName() + );; @Override diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml index b92ec5a2a..409f69f12 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -7,7 +7,6 @@ spring: check-template-location: false profiles: active: dev -# active: prod jackson: time-zone: GMT+8 data: @@ -44,7 +43,7 @@ spring: enable_lazy_load_no_trans: true dynamic: tp: - enabled: false # 是否启用 dynamictp,默认true + enabled: true # 是否启用 dynamictp,默认true enabledBanner: false # 是否启用 控制台banner,默认true enabledCollect: true # 是否开启监控指标采集,默认true collectorTypes: logging,test_collect # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer @@ -57,30 +56,23 @@ spring: keepAliveTime: 60 runTimeout: 10000 queueTimeout: 100 - notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - - type: change - enabled: true - - - type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类 - enabled: true - threshold: 80 # 报警阈值,默认70,意思是队列使用率达到70%告警 - interval: 120 # 报警间隔(单位:s),默认120 - - - type: liveness # 线程池活性 - enabled: true - threshold: 80 # 报警阈值,默认 70,意思是活性达到70%告警 - - - type: reject # 触发任务拒绝告警 - enabled: true - threshold: 100 # 默认阈值10 - - - type: run_timeout # 任务执行超时告警 - enabled: true - threshold: 100 # 默认阈值10 - - - type: queue_timeout # 任务排队超时告警 - enabled: true - threshold: 100 # 默认阈值10 + executors: # 动态线程池配置,都有默认值,采用默认值的可以不配置该项,减少配置量 + - threadPoolName: dtpExecutor1 # 线程池名称,必填 + threadPoolAliasName: core_thread # 线程池别名,可选 + executorType: common # 线程池类型 common、eager、ordered、scheduled、priority,默认 common + corePoolSize: 10 # 核心线程数,默认1 + maximumPoolSize: 30 # 最大线程数,默认cpu核数 + queueCapacity: 1024 # 队列容量,默认1024 + queueType: VariableLinkedBlockingQueue # 任务队列,查看源码QueueTypeEnum枚举类,默认VariableLinkedBlockingQueue + rejectedHandlerType: CallerRunsPolicy # 拒绝策略,查看RejectedTypeEnum枚举类,默认AbortPolicy + keepAliveTime: 30 # 空闲线程等待超时时间,默认60 + threadNamePrefix: core_thread # 线程名前缀,默认dtp + allowCoreThreadTimeOut: true # 是否允许核心线程池超时,默认false + waitForTasksToCompleteOnShutdown: true # 参考spring线程池设计,优雅关闭线程池,默认true + awaitTerminationSeconds: 5 # 优雅关闭线程池时,阻塞等待线程池中任务执行时间,默认3,单位(s) + preStartAllCoreThreads: false # 是否预热所有核心线程,默认false + runTimeout: 2000 # 任务执行超时阈值,单位(ms),默认0(不统计) + queueTimeout: 1000 # 任务在队列等待超时阈值,单位(ms),默认0(不统计) task: pool: # 核心线程池大小 @@ -137,7 +129,7 @@ security: mybatis-plus: configuration: map-underscore-to-camel-case: false - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl mapper-locations: - classpath:org.nl.**.mapper/*.xml global-config: diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/acs2/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index 2d43eddc5..d17f7a81e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -69,11 +69,11 @@ https://juejin.cn/post/6844903775631572999 - - + + - +