This commit is contained in:
@@ -15,4 +15,6 @@ public interface EMSScheduler {
|
|||||||
|
|
||||||
void deleteAndAddJob(Scheduler scheduler, String jobName) throws SchedulerException, ClassNotFoundException;
|
void deleteAndAddJob(Scheduler scheduler, String jobName) throws SchedulerException, ClassNotFoundException;
|
||||||
|
|
||||||
|
void reloadJob(String jobName) throws SchedulerException, ClassNotFoundException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,32 @@ public class EMSSchedulerImpl implements EMSScheduler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reloadJob(String jobName) throws SchedulerException, ClassNotFoundException {
|
||||||
|
JobInfo jobInfo = jobInfoService.getById(jobName);
|
||||||
|
if (CLUSTERED.equals(jobInfo.getInstanceName())) {
|
||||||
|
reloadClusteredJob(jobInfo);
|
||||||
|
} else {
|
||||||
|
deleteAndAddJob(scheduler, jobInfo);
|
||||||
|
deleteJob(clusteredScheduler, jobName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reloadClusteredJob(JobInfo jobInfo) throws SchedulerException, ClassNotFoundException {
|
||||||
|
TriggerKey triggerKey = new TriggerKey(getTriggerName(jobInfo.getId()), Scheduler.DEFAULT_GROUP);
|
||||||
|
Trigger existing = clusteredScheduler.getTrigger(triggerKey);
|
||||||
|
if (existing != null) {
|
||||||
|
CronTrigger newTrigger = newTrigger()
|
||||||
|
.withIdentity(triggerKey)
|
||||||
|
.withSchedule(cronSchedule(jobInfo.getCronExp()))
|
||||||
|
.build();
|
||||||
|
Date ft = clusteredScheduler.rescheduleJob(triggerKey, newTrigger);
|
||||||
|
log.info("{} rescheduled at: {} cron: {}", jobInfo.getId(), ft, jobInfo.getCronExp());
|
||||||
|
} else {
|
||||||
|
deleteAndAddJob(clusteredScheduler, jobInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void deleteJob(Scheduler inScheduler, String jobNm) throws SchedulerException {
|
public void deleteJob(Scheduler inScheduler, String jobNm) throws SchedulerException {
|
||||||
JobKey key = new JobKey(jobNm, Scheduler.DEFAULT_GROUP);
|
JobKey key = new JobKey(jobNm, Scheduler.DEFAULT_GROUP);
|
||||||
JobDetail jobDetail = inScheduler.getJobDetail(key);
|
JobDetail jobDetail = inScheduler.getJobDetail(key);
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ public class SchedulerManController extends BaseAnnotationController {
|
|||||||
@Qualifier("monitoringSyncAgent")
|
@Qualifier("monitoringSyncAgent")
|
||||||
private MonitoringSyncAgent monitoringSyncAgent;
|
private MonitoringSyncAgent monitoringSyncAgent;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EMSScheduler emsScheduler;
|
||||||
|
|
||||||
@GetMapping(value = "/common/scheduler/schedulerMan.view")
|
@GetMapping(value = "/common/scheduler/schedulerMan.view")
|
||||||
public String viewList() {
|
public String viewList() {
|
||||||
return "/common/scheduler/schedulerMan";
|
return "/common/scheduler/schedulerMan";
|
||||||
@@ -96,6 +99,11 @@ public class SchedulerManController extends BaseAnnotationController {
|
|||||||
@PostMapping(value = "/common/scheduler/schedulerMan.json", params = "cmd=UPDATE")
|
@PostMapping(value = "/common/scheduler/schedulerMan.json", params = "cmd=UPDATE")
|
||||||
public ResponseEntity<Void> update(JobInfoUI jobInfoUI) {
|
public ResponseEntity<Void> update(JobInfoUI jobInfoUI) {
|
||||||
service.update(jobInfoUI);
|
service.update(jobInfoUI);
|
||||||
|
try {
|
||||||
|
emsScheduler.reloadJob(jobInfoUI.getId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("reloadJob error on current server", e);
|
||||||
|
}
|
||||||
syncReloadScheduler(jobInfoUI.getId());
|
syncReloadScheduler(jobInfoUI.getId());
|
||||||
return ResponseEntity.ok().build();
|
return ResponseEntity.ok().build();
|
||||||
}
|
}
|
||||||
@@ -115,7 +123,7 @@ public class SchedulerManController extends BaseAnnotationController {
|
|||||||
String url = "/monitoring/schedulerReload.do";
|
String url = "/monitoring/schedulerReload.do";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ret = monitoringSyncAgent.sync(url, paramMap);
|
ret = monitoringSyncAgent.targetSync(url, paramMap);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("syncReloadScheduler error", e);
|
logger.error("syncReloadScheduler error", e);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
+12
-15
@@ -1,10 +1,10 @@
|
|||||||
package com.eactive.eai.rms.onl.common.controller;
|
package com.eactive.eai.rms.onl.common.controller;
|
||||||
|
|
||||||
import com.eactive.eai.rms.common.interceptor.InterceptorSkipController;
|
import java.util.HashMap;
|
||||||
import com.eactive.eai.rms.common.scheduler.EMSScheduler;
|
import java.util.Map;
|
||||||
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterJobInfo;
|
|
||||||
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterSchedulerUtil;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.SpcfTmAdapterDao;
|
|
||||||
import org.quartz.Scheduler;
|
import org.quartz.Scheduler;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -15,9 +15,11 @@ import org.springframework.stereotype.Controller;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import com.eactive.eai.rms.common.interceptor.InterceptorSkipController;
|
||||||
import java.util.HashMap;
|
import com.eactive.eai.rms.common.scheduler.EMSScheduler;
|
||||||
import java.util.Map;
|
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterJobInfo;
|
||||||
|
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterSchedulerUtil;
|
||||||
|
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.SpcfTmAdapterDao;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class SchedulerReloadController implements InterceptorSkipController {
|
public class SchedulerReloadController implements InterceptorSkipController {
|
||||||
@@ -34,19 +36,14 @@ public class SchedulerReloadController implements InterceptorSkipController {
|
|||||||
private EMSScheduler emsScheduler;
|
private EMSScheduler emsScheduler;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("scheduler")
|
@Qualifier("scheduler")
|
||||||
private Scheduler scheduler;
|
private Scheduler scheduler;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("clusteredScheduler")
|
|
||||||
private Scheduler clusteredScheduler;
|
|
||||||
|
|
||||||
@RequestMapping("/schedulerReload.do")
|
@RequestMapping("/schedulerReload.do")
|
||||||
public ResponseEntity<Map<String, Object>> rmsSchedulerReload(String jobName) {
|
public ResponseEntity<Map<String, Object>> rmsSchedulerReload(String jobName) {
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
emsScheduler.deleteAndAddJob(scheduler, jobName);
|
emsScheduler.reloadJob(jobName);
|
||||||
emsScheduler.deleteAndAddJob(clusteredScheduler, jobName);
|
|
||||||
result.put("status", "success");
|
result.put("status", "success");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("", e);
|
logger.error("", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user