Просмотр исходного кода

多租户,接入 Spring Async 机制

YunaiV 4 лет назад
Родитель
Сommit
ade55d89a4
11 измененных файлов с 48 добавлено и 30 удалено
  1. 0 9
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/config/AsyncConfiguration.java
  2. 0 4
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/package-info.java
  3. 4 1
      yudao-framework/yudao-spring-boot-starter-job/pom.xml
  4. 36 0
      yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/config/YudaoAsyncAutoConfiguration.java
  5. 3 0
      yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/config/YudaoQuartzAutoConfiguration.java
  6. 3 1
      yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/package-info.java
  7. 2 1
      yudao-framework/yudao-spring-boot-starter-job/src/main/resources/META-INF/spring.factories
  8. 0 0
      yudao-framework/yudao-spring-boot-starter-job/\343\200\212\350\212\213\351\201\223 Spring Boot \345\274\202\346\255\245\344\273\273\345\212\241\345\205\245\351\227\250\343\200\213.md
  9. 0 9
      yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/config/AsyncConfiguration.java
  10. 0 4
      yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/package-info.java
  11. 0 1
      yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/framework/async/\343\200\212\350\212\213\351\201\223 Spring Boot \345\274\202\346\255\245\344\273\273\345\212\241\345\205\245\351\227\250\343\200\213.md

+ 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/\343\200\212\350\212\213\351\201\223 Spring Boot \345\274\202\346\255\245\344\273\273\345\212\241\345\205\245\351\227\250\343\200\213.md → yudao-framework/yudao-spring-boot-starter-job/\343\200\212\350\212\213\351\201\223 Spring Boot \345\274\202\346\255\245\344\273\273\345\212\241\345\205\245\351\227\250\343\200\213.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/\343\200\212\350\212\213\351\201\223 Spring Boot \345\274\202\346\255\245\344\273\273\345\212\241\345\205\245\351\227\250\343\200\213.md

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