From 74f7aa5cf9bb46dd903a8b8361bf2ff3ecb1ae20 Mon Sep 17 00:00:00 2001 From: eastargh Date: Fri, 28 Aug 2026 13:58:40 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9C=A0=EB=9F=89=EC=A0=9C=EC=96=B4=ED=86=A0?= =?UTF-8?q?=ED=81=B0=ED=9A=8D=EB=93=9D=EC=8B=A4=ED=8C=A8=20=EA=B0=90?= =?UTF-8?q?=EC=8B=9C=20=EC=8A=A4=EC=BC=80=EC=A5=B4=20=ED=94=84=EB=9D=BC?= =?UTF-8?q?=ED=8D=BC=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/djb/inflow/InflowTokenService.java | 16 ++++----- .../ext/djb/job/InflowTokenMonitorJob.java | 36 ++++++++++--------- 2 files changed, 28 insertions(+), 24 deletions(-) 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 {