From b21b451f480e8aacfd45997af46b1de74a1c7bef Mon Sep 17 00:00:00 2001 From: bynt <13586541001@163.com> Date: Wed, 29 May 2024 13:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/baiye/AdminApplication.java | 3 +- .../common/job/handler/ElasticJobHandler.java | 72 +++++++++++++++---- 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/admin/src/main/java/com/baiye/AdminApplication.java b/admin/src/main/java/com/baiye/AdminApplication.java index 11f0bff..76c060a 100644 --- a/admin/src/main/java/com/baiye/AdminApplication.java +++ b/admin/src/main/java/com/baiye/AdminApplication.java @@ -1,5 +1,6 @@ package com.baiye; +import com.dangdang.elasticjob.lite.autoconfigure.ElasticJobAutoConfiguration; import org.ballcat.springsecurity.oauth2.server.authorization.annotation.EnableOauth2AuthorizationServer; import org.ballcat.springsecurity.oauth2.server.resource.annotation.EnableOauth2ResourceServer; import org.mybatis.spring.annotation.MapperScan; @@ -15,7 +16,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableOauth2AuthorizationServer @EnableOauth2ResourceServer @MapperScan({ "com.baiye.**.mapper" }) -@SpringBootApplication +@SpringBootApplication(exclude = ElasticJobAutoConfiguration.class) @EnableScheduling public class AdminApplication { diff --git a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java index 1bc9aa9..4508f13 100644 --- a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java +++ b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java @@ -7,6 +7,7 @@ import com.dangdang.ddframe.job.event.JobEventConfiguration; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration; import com.dangdang.ddframe.job.lite.internal.schedule.JobRegistry; +import com.dangdang.ddframe.job.lite.internal.schedule.JobScheduleController; import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler; import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter; import lombok.extern.slf4j.Slf4j; @@ -25,7 +26,7 @@ public class ElasticJobHandler { @Autowired - private ZookeeperRegistryCenter zkRegistryCenter; + private ZookeeperRegistryCenter zookeeperRegistryCenter; @Resource private JobEventConfiguration jobEventConfiguration; @Resource @@ -43,17 +44,10 @@ public class ElasticJobHandler { public void addJob(String jobName, String cron, int shardingTotalCount, SimpleJob instance, String parameters, String description) { log.info("动态创建定时任务:jobName = {}, cron = {}, shardingTotalCount = {}, parameters = {}", jobName, cron, shardingTotalCount, parameters); - LiteJobConfiguration.Builder builder = LiteJobConfiguration.newBuilder(new SimpleJobConfiguration( - JobCoreConfiguration.newBuilder( - jobName, - cron, - shardingTotalCount - ).jobParameter(parameters).description(description).build(), - instance.getClass().getName() - )).overwrite(true); + LiteJobConfiguration.Builder builder = LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(jobName, cron, shardingTotalCount).jobParameter(parameters).description(description).build(), instance.getClass().getName())).overwrite(true); LiteJobConfiguration liteJobConfiguration = builder.build(); - new SpringJobScheduler(instance, zkRegistryCenter, liteJobConfiguration, jobEventConfiguration, elasticJobListener).init(); + new SpringJobScheduler(instance, zookeeperRegistryCenter, liteJobConfiguration, jobEventConfiguration, elasticJobListener).init(); } /** @@ -64,7 +58,10 @@ public class ElasticJobHandler { */ public void updateJob(String jobName, String cron) { log.info("更新定时任务:jobName = {}, cron = {}", jobName, cron); - JobRegistry.getInstance().getJobScheduleController(jobName).rescheduleJob(cron); + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + jobScheduleController.rescheduleJob(cron); + } } /** @@ -74,6 +71,57 @@ public class ElasticJobHandler { */ public void removeJob(String jobName) { log.info("删除定时任务:jobName = {}", jobName); - JobRegistry.getInstance().getJobScheduleController(jobName).shutdown(); + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + jobScheduleController.pauseJob(); + jobScheduleController.shutdown(); + zookeeperRegistryCenter.remove("/" + jobName); + + } + } + + + /** + * 暂停任务 + */ + public void pauseJob(String jobName) { + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + jobScheduleController.pauseJob(); + } } + + /** + * 恢复任务 + */ + public Boolean isPaused(String jobName) { + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + return jobScheduleController.isPaused(); + } + return false; + } + + + /** + * 恢复任务 + */ + public void resumeJob(String jobName) { + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + jobScheduleController.resumeJob(); + } + } + + /** + * 立刻启动作业 + */ + public void start(String jobName) { + JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName); + if (jobScheduleController != null) { + jobScheduleController.triggerJob(); + } + } + + }