|
@@ -1,10 +1,10 @@
|
|
|
package org.ssssssss.magicapi.task.starter;
|
|
|
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
|
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
-import org.springframework.scheduling.TaskScheduler;
|
|
|
-import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
|
|
import org.ssssssss.magicapi.core.config.MagicPluginConfiguration;
|
|
|
import org.ssssssss.magicapi.core.model.Plugin;
|
|
|
import org.ssssssss.magicapi.core.web.MagicControllerRegister;
|
|
@@ -13,9 +13,15 @@ import org.ssssssss.magicapi.task.service.TaskMagicDynamicRegistry;
|
|
|
import org.ssssssss.magicapi.task.web.MagicTaskController;
|
|
|
|
|
|
@Configuration
|
|
|
-@EnableScheduling
|
|
|
+@EnableConfigurationProperties(MagicTaskConfig.class)
|
|
|
public class MagicAPITaskConfiguration implements MagicPluginConfiguration {
|
|
|
|
|
|
+ private final MagicTaskConfig config;
|
|
|
+
|
|
|
+ public MagicAPITaskConfiguration(MagicTaskConfig config) {
|
|
|
+ this.config = config;
|
|
|
+ }
|
|
|
+
|
|
|
@Bean
|
|
|
@ConditionalOnMissingBean
|
|
|
public TaskInfoMagicResourceStorage taskInfoMagicResourceStorage() {
|
|
@@ -24,8 +30,17 @@ public class MagicAPITaskConfiguration implements MagicPluginConfiguration {
|
|
|
|
|
|
@Bean
|
|
|
@ConditionalOnMissingBean
|
|
|
- public TaskMagicDynamicRegistry taskMagicDynamicRegistry(TaskInfoMagicResourceStorage taskInfoMagicResourceStorage, TaskScheduler taskScheduler) {
|
|
|
- return new TaskMagicDynamicRegistry(taskInfoMagicResourceStorage, taskScheduler);
|
|
|
+ public TaskMagicDynamicRegistry taskMagicDynamicRegistry(TaskInfoMagicResourceStorage taskInfoMagicResourceStorage) {
|
|
|
+ MagicTaskConfig.Shutdown shutdown = config.getShutdown();
|
|
|
+ ThreadPoolTaskScheduler poolTaskScheduler = new ThreadPoolTaskScheduler();
|
|
|
+ poolTaskScheduler.setPoolSize(config.getPool().getSize());
|
|
|
+ poolTaskScheduler.setWaitForTasksToCompleteOnShutdown(shutdown.isAwaitTermination());
|
|
|
+ if(shutdown.getAwaitTerminationPeriod() != null){
|
|
|
+ poolTaskScheduler.setAwaitTerminationSeconds((int) shutdown.getAwaitTerminationPeriod().getSeconds());
|
|
|
+ }
|
|
|
+ poolTaskScheduler.setThreadNamePrefix(config.getThreadNamePrefix());
|
|
|
+ poolTaskScheduler.initialize();
|
|
|
+ return new TaskMagicDynamicRegistry(taskInfoMagicResourceStorage, poolTaskScheduler);
|
|
|
}
|
|
|
|
|
|
@Override
|