|
|
@@ -35,19 +35,28 @@ public class MachineMonitorServiceImpl implements MonitorService<MachineMonitor>
|
|
|
|
|
|
@Override
|
|
|
public synchronized void addJob(MachineMonitor monitor, MonitorJob monitorJob) {
|
|
|
+ Map<String, MonitorJob> jobMap = monitor.getJobMap();
|
|
|
String jobId = String.format("%s-%s", monitor.getMachineId(), monitorJob.getJobClassName());
|
|
|
- monitorJob.setJobId(jobId);
|
|
|
- monitorJob.setEnable(true);
|
|
|
- monitor.getJobMap().put(monitorJob.getJobId(), monitorJob);
|
|
|
+ MonitorJob job = jobMap.get(jobId);
|
|
|
+ try {
|
|
|
+ if (job == null) {
|
|
|
+ // 添加任务
|
|
|
+ monitorJob.setJobId(jobId);
|
|
|
+ monitorJob.setEnable(true);
|
|
|
+ jobMap.put(jobId, monitorJob);
|
|
|
|
|
|
- int runningJobs = monitor.getRunningJobs();
|
|
|
- monitor.setRunningJobs(runningJobs+1);
|
|
|
- int totalJobs = monitor.getTotalJobs();
|
|
|
- monitor.setTotalJobs(totalJobs+1);
|
|
|
+ int runningJobs = monitor.getRunningJobs();
|
|
|
+ monitor.setRunningJobs(runningJobs+1);
|
|
|
+ int totalJobs = monitor.getTotalJobs();
|
|
|
+ monitor.setTotalJobs(totalJobs+1);
|
|
|
|
|
|
- // TODO 这两个操作的状态应该保持一致
|
|
|
- try {
|
|
|
- monitorScheduler.addMachineMonitorJob(monitor, jobId);
|
|
|
+ monitorScheduler.addMachineMonitorJob(monitor, jobId);
|
|
|
+ } else {
|
|
|
+ // 修改任务
|
|
|
+ job.setCronExp(monitorJob.getCronExp());
|
|
|
+ monitorScheduler.modifyJob(jobId, monitorJob.getCronExp());
|
|
|
+ }
|
|
|
+ // TODO 两个操作的状态应该保持一致
|
|
|
machineMonitorRepository.save(monitor);
|
|
|
} catch (SchedulerException | IOException e) {
|
|
|
log.error("{}", e.getMessage());
|