diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java b/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java index 436de74..1f945cd 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/inflow/InflowTokenService.java @@ -31,16 +31,16 @@ public class InflowTokenService { private UmsManager ums; public void checkRecentFails(long rangeMinute) { - List rows = inflowTokenRepository.countTokenInsufficient(rangeMinute); - - for (InflowTokenInsufficient info : rows) { - log.debug("유량제어 토큰 획득 실패: {}-{} 최근 {}분 동안 {}건", info.getEaisvcname(), info.getEaisvcdesc(), rangeMinute, info.getCnt()); - String message = "유량제어 토큰 획득 실패가 발생하였습니다 \n" + info.getEaisvcname(); - - if (monitoringContext.getBooleanProperty(MonitoringContext.DJB_UMS_MESSENGER_APIMONITOR_ENABLED, true)) { + if (monitoringContext.getBooleanProperty(MonitoringContext.DJB_UMS_MESSENGER_APIMONITOR_ENABLED, true)) { + List rows = inflowTokenRepository.countTokenInsufficient(rangeMinute); + + for (InflowTokenInsufficient info : rows) { + log.debug("유량제어 토큰 획득 실패: {}-{} 최근 {}분 동안 {}건", info.getEaisvcname(), info.getEaisvcdesc(), rangeMinute, info.getCnt()); + String message = "유량제어 토큰 획득 실패가 발생하였습니다 \n" + info.getEaisvcname(); + HashMap params = new HashMap(); params.put("message", message); - ums.send("api-monitor", MessageCode.INFLOW_TOKEN_FAILED, params); + ums.sendMessenger("api-monitor", MessageCode.INFLOW_TOKEN_FAILED, params); } } } 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 3327ab1..271d6dc 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,9 +1,7 @@ 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; @@ -13,7 +11,6 @@ import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.SchedulerException; -import org.quartz.Trigger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; @@ -37,7 +34,7 @@ import com.eactive.eai.rms.onl.common.util.DateUtil; *

Job 파라미터 (JobDataMap):

*
    *
  • - * NONE + * api.inflow.fail.range_minute: 유량제어 토큰 획득 실패 조회 구간 (단위: 분, 기본값: 5) *
  • *
* @@ -48,6 +45,12 @@ public class InflowTokenMonitorJob implements Job { private static final Logger log = LoggerFactory.getLogger(InflowTokenMonitorJob.class); + /** Job 파라미터 키: 유량제어 실패 조회 구간(분) */ + public static final String KEY_API_INFLOW_FAIL_RANGE_MINUTE = "api.inflow.fail.range_minute"; + + /** 유량제어 실패 조회 구간 기본값(분) */ + public static final String DEFAULT_RANGE_MINUTE = "5"; + private transient MonitoringContext monitoringContext; @Override @@ -69,18 +72,19 @@ public class InflowTokenMonitorJob implements Job { log.info("*** START InflowTokenFailMonitorJob run({})", CommonUtil.getToday("yyyy-MM-dd HH:mm")); - long execMinute = 1; //default 배치 실행주기(분) - - Trigger trigger = context.getTrigger(); - Date prevFireTime = trigger.getPreviousFireTime(); - Date nextFireTime = trigger.getNextFireTime(); - - //1회 이상 배치가 실행된 경우, 배치 간격을 구하여 유량제어조회 구간 파라미터로 전달한다 - if (prevFireTime != null && nextFireTime != null) { - long diffMillis = nextFireTime.getTime() - prevFireTime.getTime(); - execMinute = TimeUnit.MILLISECONDS.toMinutes(diffMillis); - log.info("실행 주기: {}분", execMinute); - } + // Job 프로퍼티에서 유량제어 실패 조회 구간(분)을 읽는다. 미지정 시 기본값 사용 + long execMinute; + String rangeMinute = jobDataMap.getString(KEY_API_INFLOW_FAIL_RANGE_MINUTE); + if (StringUtils.isEmpty(rangeMinute)) { + rangeMinute = DEFAULT_RANGE_MINUTE; + } + try { + execMinute = Long.parseLong(rangeMinute.trim()); + } catch (NumberFormatException e) { + log.warn("잘못된 {} 값: {} - 기본값 {} 사용", KEY_API_INFLOW_FAIL_RANGE_MINUTE, rangeMinute, DEFAULT_RANGE_MINUTE); + execMinute = Long.parseLong(DEFAULT_RANGE_MINUTE); + } + log.info("유량제어 실패 조회 구간: {}분", execMinute); ApplicationContext appContext; try {