From dc3cb5dea834cde14d1b527c22b35f1d5faebd5a Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期六, 15 二月 2025 19:26:55 +0800 Subject: [PATCH] zjh20250215 --- ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java index 5a6b099..396b908 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java @@ -2,7 +2,11 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.ltkj.framework.aspectj.AsynAspect; +import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -18,13 +22,38 @@ @Configuration @Slf4j public class ThreadPoolConfiguration { + private static final Logger logger = LoggerFactory.getLogger(AsynAspect.class); @Bean(name = "async", destroyMethod = "shutdown") public ThreadPoolExecutor systemCheckPoolExecutorService() { + // 鑾峰彇褰撳墠绾跨▼鐨勬暟鎹簮 + String dataSource = DynamicDataSourceContextHolder.getDataSourceType(); + logger.info("寮傛浼犻�掔嚎绋嬪綋鍓嶇嚎绋嬫暟鎹簮: {}", dataSource); return new ThreadPoolExecutor(3, 10, 60, TimeUnit.SECONDS, - new LinkedBlockingQueue<Runnable>(10000), + new LinkedBlockingQueue<>(10000), new ThreadFactoryBuilder().setNameFormat("default-executor-%d").build(), - (r, executor) -> log.error("system pool is full! ")); + (r, executor) -> logger.error("system pool is full! ")) { + + @Override + public void execute(Runnable task) { + // 鍖呰浠诲姟锛屽皢鏁版嵁婧愪紶閫掑埌寮傛绾跨▼ + super.execute(new Runnable() { + @Override + public void run() { + // 鍦ㄥ紓姝ョ嚎绋嬩腑璁剧疆鏁版嵁婧� + String dataSource = DynamicDataSourceContextHolder.getDataSourceType(); + try { + DynamicDataSourceContextHolder.setDataSourceType(dataSource); + task.run(); + } finally { + // 纭繚鍦ㄤ换鍔℃墽琛屽畬鎴愬悗娓呯悊鏁版嵁婧� + DynamicDataSourceContextHolder.clearDataSourceType(); + } + } + }); + } + }; } -} \ No newline at end of file + +} -- Gitblit v1.8.0