mirror of https://github.com/longtai-cn/hippo4j
parent
3f8df895e0
commit
3ed2b32074
@ -0,0 +1,35 @@
|
|||||||
|
package com.github.dynamic.threadpool.starter.alarm;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警控制实体.
|
||||||
|
*
|
||||||
|
* @author chen.ma
|
||||||
|
* @date 2021/10/28 22:15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public class AlarmControlDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线程池 Id
|
||||||
|
*/
|
||||||
|
private String threadPool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送报警类型
|
||||||
|
*/
|
||||||
|
private MessageTypeEnum typeEnum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建线程池报警标识
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String buildPk() {
|
||||||
|
return threadPool + "_" + typeEnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.github.dynamic.threadpool.starter.alarm;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.google.common.cache.Cache;
|
||||||
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警控制组件.
|
||||||
|
*
|
||||||
|
* @author chen.ma
|
||||||
|
* @date 2021/10/28 21:24
|
||||||
|
*/
|
||||||
|
public class AlarmControlHandler {
|
||||||
|
|
||||||
|
private final Cache<String, String> cache;
|
||||||
|
|
||||||
|
public AlarmControlHandler(long alarmInterval) {
|
||||||
|
cache = CacheBuilder.newBuilder()
|
||||||
|
.expireAfterWrite(alarmInterval, TimeUnit.MINUTES)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制消息推送报警频率.
|
||||||
|
*
|
||||||
|
* @param alarmControl
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isSend(AlarmControlDTO alarmControl) {
|
||||||
|
String pkId = cache.getIfPresent(alarmControl.buildPk());
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(pkId)) {
|
||||||
|
// val 无意义
|
||||||
|
cache.put(alarmControl.buildPk(), IdUtil.simpleUUID());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue