diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/AsyncConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/AsyncConfiguration.java deleted file mode 100644 index cbb7ccc5..00000000 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/AsyncConfiguration.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package top.charles7c.cnadmin.common.config.threadpool; - -import java.util.Arrays; -import java.util.concurrent.Executor; -import java.util.concurrent.ScheduledExecutorService; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.AsyncConfigurer; -import org.springframework.scheduling.annotation.EnableAsync; - -import cn.hutool.core.util.ArrayUtil; - -import top.charles7c.cnadmin.common.exception.ServiceException; - -/** - * 异步任务执行配置 - * - * @author Lion Li(RuoYi-Vue-Plus) - * @author Charles7c - * @since 2022/12/23 22:33 - */ -@Slf4j -@Configuration -@RequiredArgsConstructor -@EnableAsync(proxyTargetClass = true) -public class AsyncConfiguration implements AsyncConfigurer { - - private final ScheduledExecutorService scheduledExecutorService; - - /** - * 异步任务 @Async 执行时,使用 Java 内置线程池 - */ - @Override - public Executor getAsyncExecutor() { - return scheduledExecutorService; - } - - /** - * 异步任务执行时的异常处理 - */ - @Override - public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { - return (throwable, method, objects) -> { - throwable.printStackTrace(); - StringBuilder sb = new StringBuilder(); - sb.append("Exception message - ").append(throwable.getMessage()).append(", Method name - ") - .append(method.getName()); - if (ArrayUtil.isNotEmpty(objects)) { - sb.append(", Parameter value - ").append(Arrays.toString(objects)); - } - throw new ServiceException(sb.toString()); - }; - } -} diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java deleted file mode 100644 index c0255560..00000000 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package top.charles7c.cnadmin.common.config.threadpool; - -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; - -import lombok.extern.slf4j.Slf4j; - -import org.apache.commons.lang3.concurrent.BasicThreadFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import top.charles7c.cnadmin.common.util.ExceptionUtils; - -/** - * 线程池配置 - * - * @author Lion Li(RuoYi-Vue-Plus) - * @author Charles7c - * @since 2022/12/23 23:13 - */ -@Slf4j -@Configuration -@EnableConfigurationProperties(ThreadPoolProperties.class) -public class ThreadPoolConfiguration { - - /** 核心(最小)线程数 = CPU 核心数 + 1 */ - private final int corePoolSize = Runtime.getRuntime().availableProcessors() + 1; - - /** - * Spring 内置线程池:ThreadPoolTaskExecutor - */ - @Bean - @ConditionalOnProperty(prefix = "thread-pool", name = "enabled", havingValue = "true") - public ThreadPoolTaskExecutor threadPoolTaskExecutor(ThreadPoolProperties threadPoolProperties) { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - // 核心(最小)线程数 - executor.setCorePoolSize(corePoolSize); - // 最大线程数 - executor.setMaxPoolSize(corePoolSize * 2); - // 队列容量 - executor.setQueueCapacity(threadPoolProperties.getQueueCapacity()); - // 活跃时间 - executor.setKeepAliveSeconds(threadPoolProperties.getKeepAliveSeconds()); - // 配置当池内线程数已达到上限的时候,该如何处理新任务:不在新线程中执行任务,而是由调用者所在的线程来执行 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - return executor; - } - - /** - * Java 内置线程池:ScheduledExecutorService(适用于执行周期性或定时任务) - */ - @Bean - public ScheduledExecutorService scheduledExecutorService() { - return new ScheduledThreadPoolExecutor(corePoolSize, - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(), - new ThreadPoolExecutor.CallerRunsPolicy()) { - - @Override - protected void afterExecute(Runnable runnable, Throwable throwable) { - super.afterExecute(runnable, throwable); - ExceptionUtils.printException(runnable, throwable); - } - }; - } -} diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java deleted file mode 100644 index 63d0a398..00000000 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package top.charles7c.cnadmin.common.config.threadpool; - -import lombok.Data; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * 线程池配置属性 - * - * @author Lion Li(RuoYi-Vue-Plus) - * @author Charles7c - * @since 2022/12/23 23:06 - */ -@Data -@ConfigurationProperties(prefix = "thread-pool") -public class ThreadPoolProperties { - - /** - * 队列容量 - */ - private int queueCapacity; - - /** - * 活跃时间 - */ - private int keepAliveSeconds; -} diff --git a/continew-admin-webapi/src/main/resources/config/application.yml b/continew-admin-webapi/src/main/resources/config/application.yml index 9c4fbbde..d64cecfd 100644 --- a/continew-admin-webapi/src/main/resources/config/application.yml +++ b/continew-admin-webapi/src/main/resources/config/application.yml @@ -216,12 +216,11 @@ management.health: --- ### 线程池配置 thread-pool: - # 是否启用线程池 enabled: true # 队列容量 - queueCapacity: 128 - # 活跃时间 - keepAliveSeconds: 300 + queue-capacity: 128 + # 活跃时间(单位:秒) + keep-alive-seconds: 300 --- ### 代码生成器配置 generator: