From b7f0fb8eda40b6761b35a37f72eb5e8a3c836bed Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 21 三月 2025 11:00:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- 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..fd5561b 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,12 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.ltkj.db.DataSourceContextHolder; +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; @@ -19,12 +24,36 @@ @Slf4j public class ThreadPoolConfiguration { + private static final Logger logger = LoggerFactory.getLogger(ThreadPoolConfiguration.class); + @Bean(name = "async", destroyMethod = "shutdown") public ThreadPoolExecutor systemCheckPoolExecutorService() { + // 鑾峰彇褰撳墠绾跨▼鐨� DataSource + String currentDataSource = DataSourceContextHolder.getDataSourceKey(); + logger.info("褰撳墠绾跨▼鏁版嵁婧�: {}", currentDataSource); 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) -> log.error("system pool is full! ")) { + + @Override + public void execute(Runnable command) { + // 鍖呰浠诲姟锛岀‘淇濇暟鎹簮琚紶閫掑埌鏂扮嚎绋� + super.execute(() -> { + String dataSourceKey = DataSourceContextHolder.getDataSourceKey(); + try { + // 浼犻�掓暟鎹簮鍒板瓙绾跨▼ + DynamicDataSourceContextHolder.setDataSourceType(dataSourceKey); + command.run(); // 鎵ц浠诲姟 + } finally { + // 浠诲姟瀹屾垚鍚庢竻鐞嗘暟鎹簮涓婁笅鏂� + DynamicDataSourceContextHolder.clearDataSourceType(); + } + }); + } + }; } -} \ No newline at end of file +} + + -- Gitblit v1.8.0