in spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java [145:193]
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
logger.info("spring scheduled job is not empty, start to sync jobs...");
try {
Map<String, JobProperty> jobs = new HashMap<>();
if (!CollectionUtils.isEmpty(taskRegistrar.getCronTaskList())) {
for (CronTask cronTask : taskRegistrar.getCronTaskList()) {
if (cronTask.getRunnable() instanceof ScheduledMethodRunnable) {
ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) cronTask.getRunnable();
JobProperty jobProperty = convertToJobProperty(cronTask, runnable.getTarget(), runnable.getMethod());
jobs.put(jobProperty.getJobName(), jobProperty);
}
}
}
if (!CollectionUtils.isEmpty(taskRegistrar.getFixedDelayTaskList())) {
for (IntervalTask intervalTask : taskRegistrar.getFixedDelayTaskList()) {
if (intervalTask.getRunnable() instanceof ScheduledMethodRunnable) {
ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) intervalTask.getRunnable();
JobProperty jobProperty = convertToJobProperty(intervalTask, runnable.getTarget(), runnable.getMethod());
jobs.put(jobProperty.getJobName(), jobProperty);
}
}
}
if (!CollectionUtils.isEmpty(taskRegistrar.getFixedRateTaskList())) {
for (IntervalTask intervalTask : taskRegistrar.getFixedRateTaskList()) {
if (intervalTask.getRunnable() instanceof ScheduledMethodRunnable) {
ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) intervalTask.getRunnable();
JobProperty jobProperty = convertToJobProperty(intervalTask, runnable.getTarget(), runnable.getMethod());
jobs.put(jobProperty.getJobName(), jobProperty);
}
}
}
// 获取仅SchedulerX注解任务
Collection<Pair<Object, Method>> schedulerXTasks = schedulerxSchedulingConfigurer.getSchedulerXTaskTargets();
if (schedulerXTasks != null && schedulerXTasks.size() > 0) {
for (Pair<Object, Method> task : schedulerXTasks) {
JobProperty jobProperty = convertToJobProperty(null, task.getFirst(), task.getSecond());
jobs.put(jobProperty.getJobName(), jobProperty);
}
}
jobSyncService.syncJobs(jobs, properties.getNamespaceSource());
logger.info("spring scheduled job is not empty, sync jobs finished.");
}
catch (Exception e) {
logger.info("spring scheduled job is not empty, sync jobs failed.", e);
throw new RuntimeException(e);
}
}