소스 검색

多租户,接入 Spring Async 机制

YunaiV 3 년 전
부모
커밋
ade55d89a4

+ 0 - 9
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/config/AsyncConfiguration.java

@@ -1,9 +0,0 @@
-package cn.iocoder.yudao.adminserver.framework.async.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-@Configuration
-@EnableAsync
-public class AsyncConfiguration {
-}

+ 0 - 4
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/package-info.java

@@ -1,4 +0,0 @@
-/**
- * 异步执行,基于 Spring @Async 实现
- */
-package cn.iocoder.yudao.adminserver.framework.async;

+ 4 - 1
yudao-framework/yudao-spring-boot-starter-job/pom.xml

@@ -12,7 +12,10 @@
     <packaging>jar</packaging>
 
     <name>${artifactId}</name>
-    <description>定时任务,基于 Quartz 拓展</description>
+    <description>任务拓展
+        1. 定时任务,基于 Quartz 拓展
+        2. 异步任务,基于 Spring Async 拓展
+    </description>
     <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
 
     <dependencies>

+ 36 - 0
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/config/YudaoAsyncAutoConfiguration.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.framework.quartz.config;
+
+import com.alibaba.ttl.TtlRunnable;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+/**
+ * 异步任务 Configuration
+ */
+@Configuration
+@EnableAsync
+public class YudaoAsyncAutoConfiguration {
+
+    @Bean
+    public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() {
+        return new BeanPostProcessor() {
+
+            @Override
+            public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+                if (!(bean instanceof ThreadPoolTaskExecutor)) {
+                    return bean;
+                }
+                // 修改提交的任务,接入 TransmittableThreadLocal
+                ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) bean;
+                executor.setTaskDecorator(TtlRunnable::get);
+                return executor;
+            }
+
+        };
+    }
+
+}

+ 3 - 0
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/config/YudaoQuartzAutoConfiguration.java

@@ -6,6 +6,9 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
+/**
+ * 定时任务 Configuration
+ */
 @Configuration
 @EnableScheduling // 开启 Spring 自带的定时任务
 public class YudaoQuartzAutoConfiguration {

+ 3 - 1
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/package-info.java

@@ -1,5 +1,7 @@
 /**
- * 定时任务,采用 Quartz 实现进程内的任务执行。
+ * 1. 定时任务,采用 Quartz 实现进程内的任务执行。
  * 考虑到高可用,使用 Quartz 自带的 MySQL 集群方案。
+ *
+ * 2. 异步任务,采用 Spring Async 异步执行。
  */
 package cn.iocoder.yudao.framework.quartz;

+ 2 - 1
yudao-framework/yudao-spring-boot-starter-job/src/main/resources/META-INF/spring.factories

@@ -1,2 +1,3 @@
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  cn.iocoder.yudao.framework.quartz.config.YudaoQuartzAutoConfiguration
+  cn.iocoder.yudao.framework.quartz.config.YudaoQuartzAutoConfiguration,\
+  cn.iocoder.yudao.framework.quartz.config.YudaoAsyncAutoConfiguration

+ 0 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/《芋道 Spring Boot 异步任务入门》.md → yudao-framework/yudao-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md


+ 0 - 9
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/config/AsyncConfiguration.java

@@ -1,9 +0,0 @@
-package cn.iocoder.yudao.userserver.framework.async.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-@Configuration
-@EnableAsync
-public class AsyncConfiguration {
-}

+ 0 - 4
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/package-info.java

@@ -1,4 +0,0 @@
-/**
- * 异步执行,基于 Spring @Async 实现
- */
-package cn.iocoder.yudao.userserver.framework.async;

+ 0 - 1
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/《芋道 Spring Boot 异步任务入门》.md

@@ -1 +0,0 @@
-<http://www.iocoder.cn/Spring-Boot/Async-Job/?yudao>