添加告警规则轮询检查

This commit is contained in:
ascrutae 2016-01-25 18:20:04 +08:00
parent 2eb5d9676c
commit 9419d9122d
3 changed files with 18 additions and 3 deletions

View File

@ -41,12 +41,19 @@ public class AlarmMessageProcessThread extends Thread {
@Override
public void run() {
long interval = 0L;
//注册服务(默认为空闲状态)
registerProcessThread(threadId, ProcessThreadStatus.FREE);
while (true) {
try {
//检查是否为忙碌状态
if (status == ProcessThreadStatus.BUSY) {
if (interval > Config.Server.ALARM_RULE_ACTIVITY_INTERVAL) {
//重新加载用户配置
cacheProcessUser(processUserIds);
interval = 0;
}
//处理告警信息
for (Map.Entry<UserInfo, List<AlarmRule>> entry : cacheRules.entrySet()) {
for (AlarmRule rule : entry.getValue()) {
@ -74,6 +81,7 @@ public class AlarmMessageProcessThread extends Thread {
// 缓存数据
cacheProcessUser(processUserIds);
interval = 0;
// 修改自身状态 (忙碌状态)
status = ProcessThreadStatus.BUSY;
@ -82,6 +90,7 @@ public class AlarmMessageProcessThread extends Thread {
try {
Thread.sleep(Config.ProcessThread.THREAD_WAIT_INTERVAL);
interval += Config.ProcessThread.THREAD_WAIT_INTERVAL;
} catch (InterruptedException e) {
logger.error("Sleep failed.", e);
}
@ -98,6 +107,8 @@ public class AlarmMessageProcessThread extends Thread {
private void cacheProcessUser(List<String> processUserIds) throws SQLException {
UserInfo tmpUserInfo;
List<AlarmRule> alarmRules;
// 清理原有的CacheRule
cacheRules.clear();
for (String userId : processUserIds) {
tmpUserInfo = AlarmMessageDao.selectUser(userId);
if (tmpUserInfo == null) {

View File

@ -8,6 +8,8 @@ public class Config {
public static long DAEMON_THREAD_WAIT_INTERVAL = 50000L;
public static long ALARM_RULE_ACTIVITY_INTERVAL = 3600000L;
}
public static class ProcessThread {
@ -47,13 +49,13 @@ public class Config {
public static class DB {
public static String PASSWORD = "devrdbusr13";
public static String PASSWORD = "devrdbusr21";
public static String USER_NAME = "devrdbusr13";
public static String USER_NAME = "devrdbusr21";
public static String DRIVER_CLASS = "com.mysql.jdbc.Driver";
public static String URL = "jdbc:mysql://10.1.228.200:31306/test";
public static String URL = "jdbc:mysql://10.1.228.202:31316/test";
public static int MAX_IDLE = 1;

View File

@ -2,6 +2,8 @@
server.process_thread_size=2
#守护线程等待周期
server.daemon_thread_wait_interval=50000
#告警规则生效周期
server.alarm_rule_activity_interval=3600000
#处理线程等待周期
processthread.thread_wait_interval=5000