ums Alarm 작업..

This commit is contained in:
cho
2026-02-06 09:43:58 +09:00
parent fcedbabfc9
commit 0340f63a79
13 changed files with 452 additions and 0 deletions
@@ -0,0 +1,80 @@
package com.eactive.eai.custom.alarm;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Properties;
import org.springframework.stereotype.Service;
import com.eactive.eai.common.property.PropManager;
import com.eactive.eai.common.util.Jsons;
import com.eactive.eai.common.util.Logger;
import com.eactive.eai.custom.alarm.key.DynamicAlarmKey;
import com.eactive.eai.custom.alarm.policy.AlarmPolicy;
import com.eactive.eai.custom.alarm.policy.CounterPolicy;
import com.eactive.eai.custom.alarm.policy.TimerPolicy;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@Service
public class AlarmService {
protected static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
final static String ALARM_GROUP = "Alarm";
final static String ALARM_KEY = "Alarm";
final static String ALARM_RECIVER = "{RECIVER}";
public List<AlarmPolicy> getAlarmPolicy() {
List<AlarmPolicy> policyList = new ArrayList<AlarmPolicy>();
try {
Properties props = PropManager.getInstance().getProperties(ALARM_GROUP);
props.forEach((key, value) -> {
String keyName = (String) key;
String configStr = (String) value;
if (keyName.contains(ALARM_RECIVER))
return;
policyList.add(buildAlarmPolicy(keyName, configStr));
});
} catch (Exception e) {
logger.error("getAlarmPolicy fail.", e);
return Collections.EMPTY_LIST;
}
return null;
}
AlarmPolicy buildAlarmPolicy(String key, String configJsonStr) {
JsonObject alarmConfig = Jsons.GSON.fromJson(configJsonStr, JsonObject.class);
String policyType = alarmConfig.get("type").getAsString();
int coolDownSec = Optional.ofNullable(alarmConfig.get("coolDownSec")).map(i -> i.getAsInt()).orElse(60);
int thresholdCount = Optional.ofNullable(alarmConfig.get("thresholdCount")).map(i -> i.getAsInt()).orElse(5);
int timeWindowSec = Optional.ofNullable(alarmConfig.get("timeWindowSec")).map(i -> i.getAsInt()).orElse(60);
AlarmPolicy alarmPolicy;
if ("CountPolicy".equals(policyType)) {
alarmPolicy = CounterPolicy.builder().alarmKey(new DynamicAlarmKey(key)).coolDownMs(coolDownSec * 1000)
.thresholdCount(thresholdCount).build();
} else {
alarmPolicy = TimerPolicy.builder().alarmKey(new DynamicAlarmKey(key)).coolDownMs(coolDownSec * 1000)
.timeWindowMs(timeWindowSec * 1000).build();
}
return alarmPolicy;
}
}