|
|
|
@ -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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|