diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/job/ApiStatusMonitorJob.java b/src/main/java/com/eactive/eai/rms/ext/djb/job/ApiStatusMonitorJob.java index 6d0dd5c..217d9df 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/job/ApiStatusMonitorJob.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/job/ApiStatusMonitorJob.java @@ -1,6 +1,9 @@ package com.eactive.eai.rms.ext.djb.job; +import java.util.Arrays; import java.util.HashMap; +import java.util.Set; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; @@ -68,10 +71,24 @@ public class ApiStatusMonitorJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { + JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); + + // execute.instances 가 지정된 경우 해당 인스턴스에서만 실행 + String allowedInstances = jobDataMap.getString("execute.instances"); + if (StringUtils.isNotEmpty(allowedInstances)) { + Set instanceSet = Arrays.stream(allowedInstances.split(",")) + .map(s -> s.trim().toLowerCase()) + .collect(Collectors.toSet()); + String currentInstance = StringUtils.defaultString(System.getProperty("inst.Name")).trim().toLowerCase(); + if (!instanceSet.contains(currentInstance)) { + log.debug("Job 실행 인스턴스 제한 - 현재: {}, 허용: {}", currentInstance, allowedInstances); + return; + } + } + log.info("*** START ApiStatusUpdateJob run({})", CommonUtil.getToday("yyyy-MM-dd HH:mm")); // Job 파라미터 로깅 - JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); logJobParameters(jobDataMap); HashMap param = this.checkParameters(jobDataMap); diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/job/InflowTokenMonitorJob.java b/src/main/java/com/eactive/eai/rms/ext/djb/job/InflowTokenMonitorJob.java index bcb1a5f..3327ab1 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/job/InflowTokenMonitorJob.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/job/InflowTokenMonitorJob.java @@ -1,8 +1,12 @@ package com.eactive.eai.rms.ext.djb.job; +import java.util.Arrays; import java.util.Date; +import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobDataMap; @@ -48,6 +52,21 @@ public class InflowTokenMonitorJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { + JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); + + // execute.instances 가 지정된 경우 해당 인스턴스에서만 실행 + String allowedInstances = jobDataMap.getString("execute.instances"); + if (StringUtils.isNotEmpty(allowedInstances)) { + Set instanceSet = Arrays.stream(allowedInstances.split(",")) + .map(s -> s.trim().toLowerCase()) + .collect(Collectors.toSet()); + String currentInstance = StringUtils.defaultString(System.getProperty("inst.Name")).trim().toLowerCase(); + if (!instanceSet.contains(currentInstance)) { + log.debug("Job 실행 인스턴스 제한 - 현재: {}, 허용: {}", currentInstance, allowedInstances); + return; + } + } + log.info("*** START InflowTokenFailMonitorJob run({})", CommonUtil.getToday("yyyy-MM-dd HH:mm")); long execMinute = 1; //default 배치 실행주기(분) diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/job/PortalInquiryClosingJob.java b/src/main/java/com/eactive/eai/rms/ext/djb/job/PortalInquiryClosingJob.java index 2c976cd..afc8c69 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/job/PortalInquiryClosingJob.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/job/PortalInquiryClosingJob.java @@ -5,14 +5,20 @@ import com.eactive.eai.rms.common.datasource.DataSourceTypeManager; import com.eactive.eai.rms.common.util.CommonUtil; import com.eactive.eai.rms.onl.apim.portalInquiry.PortalInquiryClosingService; import com.eactive.eai.rms.onl.common.util.DateUtil; +import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; +import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + /** * 매일 00:05 실행 - RESPONDED 상태 문의글 자동 종료 배치 * @@ -44,6 +50,21 @@ public class PortalInquiryClosingJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { + JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); + + // execute.instances 가 지정된 경우 해당 인스턴스에서만 실행 + String allowedInstances = jobDataMap.getString("execute.instances"); + if (StringUtils.isNotEmpty(allowedInstances)) { + Set instanceSet = Arrays.stream(allowedInstances.split(",")) + .map(s -> s.trim().toLowerCase()) + .collect(Collectors.toSet()); + String currentInstance = StringUtils.defaultString(System.getProperty("inst.Name")).trim().toLowerCase(); + if (!instanceSet.contains(currentInstance)) { + log.debug("Job 실행 인스턴스 제한 - 현재: {}, 허용: {}", currentInstance, allowedInstances); + return; + } + } + log.info("*** START PortalInquiryCommentClosingService run({})", CommonUtil.getToday("yyyy-MM-dd HH:mm")); int closingDays = DEFAULT_CLOSING_DAYS;