Kaynağa Gözat

增加`magic-api.task.enable`配置

mxd 3 yıl önce
ebeveyn
işleme
9e691c802f

+ 6 - 5
magic-api-plugins/magic-api-plugin-task/src/main/java/org/ssssssss/magicapi/task/service/TaskMagicDynamicRegistry.java

@@ -46,11 +46,11 @@ public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskI
 	@Override
 	protected boolean register(MappingNode<TaskInfo> mappingNode) {
 		TaskInfo info = mappingNode.getEntity();
-		if(taskScheduler != null){
+		if (taskScheduler != null) {
 			CronTask cronTask = new CronTask(() -> {
 				TaskInfo entity = mappingNode.getEntity();
 				String scriptName = MagicConfiguration.getMagicResourceService().getScriptName(entity);
-				if(entity.isEnabled()){
+				if (entity.isEnabled()) {
 					try {
 						logger.info("定时任务:[{}]开始执行", scriptName);
 						MagicScriptContext magicScriptContext = new MagicScriptContext();
@@ -65,8 +65,6 @@ public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskI
 			}, info.getCron());
 			mappingNode.setMappingData(taskScheduler.schedule(cronTask.getRunnable(), cronTask.getTrigger()));
 			logger.debug("注册定时任务:[{},{}]", MagicConfiguration.getMagicResourceService().getScriptName(info), info.getCron());
-		} else {
-			logger.debug("注册定时任务失败:[{}, {}], 当前 TaskScheduler 为空", MagicConfiguration.getMagicResourceService().getScriptName(info), info.getCron());
 		}
 
 		return true;
@@ -74,10 +72,13 @@ public class TaskMagicDynamicRegistry extends AbstractMagicDynamicRegistry<TaskI
 
 	@Override
 	protected void unregister(MappingNode<TaskInfo> mappingNode) {
+		if (taskScheduler == null) {
+			return;
+		}
 		TaskInfo info = mappingNode.getEntity();
 		logger.debug("取消注册定时任务:[{}, {}, {}]", info.getName(), info.getPath(), info.getCron());
 		ScheduledFuture<?> scheduledFuture = (ScheduledFuture<?>) mappingNode.getMappingData();
-		if(scheduledFuture != null){
+		if (scheduledFuture != null) {
 			try {
 				scheduledFuture.cancel(true);
 			} catch (Exception e) {

+ 10 - 7
magic-api-plugins/magic-api-plugin-task/src/main/java/org/ssssssss/magicapi/task/starter/MagicAPITaskConfiguration.java

@@ -32,14 +32,17 @@ public class MagicAPITaskConfiguration implements MagicPluginConfiguration {
 	@ConditionalOnMissingBean
 	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());
+		ThreadPoolTaskScheduler poolTaskScheduler = null;
+		if(config.isEnable()){
+			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();
 		}
-		poolTaskScheduler.setThreadNamePrefix(config.getThreadNamePrefix());
-		poolTaskScheduler.initialize();
 		return new TaskMagicDynamicRegistry(taskInfoMagicResourceStorage, poolTaskScheduler);
 	}
 

+ 13 - 0
magic-api-plugins/magic-api-plugin-task/src/main/java/org/ssssssss/magicapi/task/starter/MagicTaskConfig.java

@@ -8,6 +8,11 @@ import java.time.Duration;
 @ConfigurationProperties("magic-api.task")
 public class MagicTaskConfig {
 
+	/**
+	 * 是否启用定时任务
+	 */
+	private boolean enable = true;
+
 	/**
 	 * 线程池相关配置
 	 */
@@ -39,6 +44,14 @@ public class MagicTaskConfig {
 		this.threadNamePrefix = threadNamePrefix;
 	}
 
+	public boolean isEnable() {
+		return enable;
+	}
+
+	public void setEnable(boolean enable) {
+		this.enable = enable;
+	}
+
 	public static class Pool {
 
 		/**