유량제어토큰획득실패 감시 스케쥴 프라퍼티 추가
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
eastargh
2026-08-28 13:58:40 +09:00
parent 258bb70a93
commit 74f7aa5cf9
2 changed files with 28 additions and 24 deletions
@@ -31,16 +31,16 @@ public class InflowTokenService {
private UmsManager ums;
public void checkRecentFails(long rangeMinute) {
List<InflowTokenInsufficient> 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<InflowTokenInsufficient> rows = inflowTokenRepository.countTokenInsufficient(rangeMinute);
for (InflowTokenInsufficient info : rows) {
log.debug("유량제어 토큰 획득 실패: {}-{} 최근 {}분 동안 {}건", info.getEaisvcname(), info.getEaisvcdesc(), rangeMinute, info.getCnt());
String message = "유량제어 토큰 획득 실패가 발생하였습니다 \n" + info.getEaisvcname();
HashMap<String,Object> params = new HashMap<String,Object>();
params.put("message", message);
ums.send("api-monitor", MessageCode.INFLOW_TOKEN_FAILED, params);
ums.sendMessenger("api-monitor", MessageCode.INFLOW_TOKEN_FAILED, params);
}
}
}
@@ -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;
* <p>Job 파라미터 (JobDataMap):</p>
* <ul>
* <li>
* NONE
* <b>api.inflow.fail.range_minute</b>: 유량제어 토큰 획득 실패 조회 구간 (단위: 분, 기본값: 5)
* </li>
* </ul>
*
@@ -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 {