java实现30分钟内不重复告警工具
今天在做项目时碰到了一个需求,该项目需要监控web应用的接口调用情况,当超过设置的调用次数阈值(比如某接口一分钟调用超过100次)后进行微信告警。由于对接的是公司内部的微信告警平台,而告警平台暂时未提供一些配置,比如某报警信息30分钟不重复报送之类的。所以就在本地项目开发一个告警工具,实现30分钟内不重复报警。该工具暂不支持集群。
public class AlarmUtil {
private static final Logger logger = LoggerFactory.getLogger(AlarmUtil.class);
private static final AlarmUtil ALARMUTIL = new AlarmUtil();
private static final String PROFILE = "prod";
//30分钟内不重复告警
public static final ConcurrentHashMap<String, Date> ALARMMSG = new ConcurrentHashMap<>();
private AlarmUtil() {
}
/**
* 用于判断30分钟的内的起始时间
*/
public static Date startTime = DateUtils.addMinutes(new Date(), -1);
//告警间隔 单位分钟 默认30分钟
private static final long ALARM_TIME_INTERVAL = 1800000;
public static synchronized void alarm(AlarmParam param, String alarmUrl, String env, Date value) {
//正式环境告警
if (!PR