opt:调度操作判断当前IP是否是调度Ip

This commit is contained in:
DESKTOP-5DIJMF9\admin
2025-03-13 18:44:05 +08:00
parent 6df5d564b3
commit 42e595a906

View File

@@ -1,5 +1,6 @@
package org.nl.system.service.quartz.utils; package org.nl.system.service.quartz.utils;
import cn.hutool.core.net.NetUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.system.service.quartz.dao.SysQuartzJob; import org.nl.system.service.quartz.dao.SysQuartzJob;
@@ -26,6 +27,14 @@ public class QuartzManage {
private Scheduler scheduler; private Scheduler scheduler;
public void addJob(SysQuartzJob quartzJob) { public void addJob(SysQuartzJob quartzJob) {
//本机IP
String localIp = NetUtil.getLocalhostStr();
System.out.println("本机ip"+localIp);
if (!judgmentIp(quartzJob.getJob_ip())) {
throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同");
}
try { try {
// 构建job信息 // 构建job信息
JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class). JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class).
@@ -62,8 +71,16 @@ public class QuartzManage {
* @param quartzJob / * @param quartzJob /
*/ */
public void updateJobCron(SysQuartzJob quartzJob) { public void updateJobCron(SysQuartzJob quartzJob) {
//本机IP
String localIp = NetUtil.getLocalhostStr();
System.out.println("本机ip"+localIp);
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
if (!judgmentIp(quartzJob.getJob_ip())) {
throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同");
}
try { try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务 // 如果不存在则创建一个定时任务
if (trigger == null) { if (trigger == null) {
@@ -93,8 +110,16 @@ public class QuartzManage {
* @param quartzJob / * @param quartzJob /
*/ */
public void resumeJob(SysQuartzJob quartzJob) { public void resumeJob(SysQuartzJob quartzJob) {
//本机IP
String localIp = NetUtil.getLocalhostStr();
System.out.println("本机ip"+localIp);
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
if (!judgmentIp(quartzJob.getJob_ip())) {
throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同");
}
try { try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务 // 如果不存在则创建一个定时任务
if (trigger == null) { if (trigger == null) {
@@ -129,17 +154,30 @@ public class QuartzManage {
* @param quartzJob / * @param quartzJob /
*/ */
public void runJobNow(SysQuartzJob quartzJob) { public void runJobNow(SysQuartzJob quartzJob) {
//本机IP
String localIp = NetUtil.getLocalhostStr();
System.out.println("本机ip"+localIp);
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
if (!judgmentIp(quartzJob.getJob_ip())) {
throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同");
}
try { try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务 log.info("定时任务:{}, 执行ip: {}, 定时任务开启", quartzJob.getJob_name(), localIp);
if (trigger == null) { System.out.println("定时任务: " + quartzJob.getJob_name() + ", 执行ip: " + localIp + ", 定时任务开启");
addJob(quartzJob);
} // 如果不存在则创建一个定时任务
JobDataMap dataMap = new JobDataMap(); if (trigger == null) {
dataMap.put(SysQuartzJob.JOB_KEY, quartzJob); addJob(quartzJob);
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getJob_id()); }
scheduler.triggerJob(jobKey, dataMap); JobDataMap dataMap = new JobDataMap();
dataMap.put(SysQuartzJob.JOB_KEY, quartzJob);
JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getJob_id());
scheduler.triggerJob(jobKey, dataMap);
} catch (Exception e) { } catch (Exception e) {
log.error("定时任务执行失败", e); log.error("定时任务执行失败", e);
throw new BadRequestException("定时任务执行失败"); throw new BadRequestException("定时任务执行失败");
@@ -161,4 +199,9 @@ public class QuartzManage {
throw new BadRequestException("删除定时任务失败"); throw new BadRequestException("删除定时任务失败");
} }
} }
public static Boolean judgmentIp(String ip) {
return NetUtil.localAddressList(null).stream()
.anyMatch(inet -> ip.equals(inet.getHostAddress()));
}
} }