ums Alarm 작업..
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user