internal static void Init() { mailMemoryQueueService = LocalServiceLocator.GetService <IMemoryQueueService>(); mobileMemoryQueueService = LocalServiceLocator.GetService <IMemoryQueueService>(); alarmServiceStates = new List <AlarmServiceState>(); mailService = new MailService(); mobileService = new MobileService(); mailService.Init(AlarmConfiguration.GetConfig().MailSmtp, AlarmConfiguration.GetConfig().MailUsername, AlarmConfiguration.GetConfig().MailPassword); mobileService.Init(AlarmConfiguration.GetConfig().MobileCategoryId); mailMemoryQueueService.Init(new MemoryQueueServiceConfiguration("AlarmService_MailQueue", mailService.Send) { ConsumeItemCountInOneBatch = 1, ConsumeIntervalMilliseconds = AlarmConfiguration.GetConfig().MailMessageInerval, ConsumeIntervalWhenErrorMilliseconds = AlarmConfiguration.GetConfig().MailMessageErrorInerval, ConsumeErrorAction = MemoryQueueServiceConsumeErrorAction.EnqueueTwiceAndLogException }); mobileMemoryQueueService.Init(new MemoryQueueServiceConfiguration("AlarmService_MobileQueue", mobileService.Send) { ConsumeItemCountInOneBatch = 1, ConsumeIntervalMilliseconds = AlarmConfiguration.GetConfig().MobileMessageInerval, ConsumeIntervalWhenErrorMilliseconds = AlarmConfiguration.GetConfig().MobileMessageErrorInerval, ConsumeErrorAction = MemoryQueueServiceConsumeErrorAction.EnqueueTwiceAndLogException }); InitClearExpiredAlarmItem(); var config = AlarmConfiguration.GetConfig(); foreach (var item in config.AlarmConfigurationByStatistics) { var alarmServiceState = new AlarmServiceState { AlarmConfigurationItemName = item.Value.ConfigName, AlarmServiceStateItems = new Dictionary <string, AlarmServiceStateItem>(), }; item.Value.AlarmReceiverGroupNames.Values.Each(groupName => { alarmServiceState.AlarmServiceStateItems.Add(groupName, new AlarmServiceStateItem { ReceiverGroupName = groupName, AlarmReceiverGroupLastMailMessageTime = DateTime.MinValue, AlarmReceiverGroupLastMobileMessageTime = DateTime.MinValue, }); }); var interval = item.Value.CheckTimeSpan; var timer = new System.Threading.Timer(CheckActionForStatistics, item.Value.ConfigName, interval, interval); alarmServiceState.CheckTimer = timer; alarmServiceStates.Add(alarmServiceState); } foreach (var item in config.AlarmConfigurationByStates) { var alarmServiceState = new AlarmServiceState { AlarmConfigurationItemName = item.Value.ConfigName, AlarmServiceStateItems = new Dictionary <string, AlarmServiceStateItem>(), }; item.Value.AlarmReceiverGroupNames.Values.Each(groupName => { alarmServiceState.AlarmServiceStateItems.Add(groupName, new AlarmServiceStateItem { ReceiverGroupName = groupName, AlarmReceiverGroupLastMailMessageTime = DateTime.MinValue, AlarmReceiverGroupLastMobileMessageTime = DateTime.MinValue, }); }); var interval = item.Value.CheckTimeSpan; var timer = new System.Threading.Timer(CheckActionForState, item.Value.ConfigName, interval, interval); alarmServiceState.CheckTimer = timer; alarmServiceStates.Add(alarmServiceState); } AppInfoCenterService.LoggingService.Info(AlarmConfigurationBase.ModuleName, "AlarmService", "Init", string.Format("完成一次报警服务初始化,读取到 {0} 个状态报警,{1} 个统计报警", config.AlarmConfigurationByStates.Count.ToString(), config.AlarmConfigurationByStatistics.Count.ToString())); }
internal static void Init() { mailMemoryQueueService = LocalServiceLocator.GetService<IMemoryQueueService>(); mobileMemoryQueueService = LocalServiceLocator.GetService<IMemoryQueueService>(); alarmServiceStates = new List<AlarmServiceState>(); mailService = new MailService(); mobileService = new MobileService(); mailService.Init(AlarmConfiguration.GetConfig().MailSmtp, AlarmConfiguration.GetConfig().MailUsername, AlarmConfiguration.GetConfig().MailPassword); mobileService.Init(AlarmConfiguration.GetConfig().MobileCategoryId); mailMemoryQueueService.Init(new MemoryQueueServiceConfiguration("AlarmService_MailQueue", mailService.Send) { ConsumeItemCountInOneBatch = 1, ConsumeIntervalMilliseconds = AlarmConfiguration.GetConfig().MailMessageInerval, ConsumeIntervalWhenErrorMilliseconds = AlarmConfiguration.GetConfig().MailMessageErrorInerval, ConsumeErrorAction = MemoryQueueServiceConsumeErrorAction.EnqueueTwiceAndLogException }); mobileMemoryQueueService.Init(new MemoryQueueServiceConfiguration("AlarmService_MobileQueue", mobileService.Send) { ConsumeItemCountInOneBatch = 1, ConsumeIntervalMilliseconds = AlarmConfiguration.GetConfig().MobileMessageInerval, ConsumeIntervalWhenErrorMilliseconds = AlarmConfiguration.GetConfig().MobileMessageErrorInerval, ConsumeErrorAction = MemoryQueueServiceConsumeErrorAction.EnqueueTwiceAndLogException }); InitClearExpiredAlarmItem(); var config = AlarmConfiguration.GetConfig(); foreach (var item in config.AlarmConfigurationByStatistics) { var alarmServiceState = new AlarmServiceState { AlarmConfigurationItemName = item.Value.ConfigName, AlarmServiceStateItems = new Dictionary<string, AlarmServiceStateItem>(), }; item.Value.AlarmReceiverGroupNames.Values.Each(groupName => { alarmServiceState.AlarmServiceStateItems.Add(groupName, new AlarmServiceStateItem { ReceiverGroupName = groupName, AlarmReceiverGroupLastMailMessageTime = DateTime.MinValue, AlarmReceiverGroupLastMobileMessageTime = DateTime.MinValue, }); }); var interval = item.Value.CheckTimeSpan; var timer = new System.Threading.Timer(CheckActionForStatistics, item.Value.ConfigName, interval, interval); alarmServiceState.CheckTimer = timer; alarmServiceStates.Add(alarmServiceState); } foreach (var item in config.AlarmConfigurationByStates) { var alarmServiceState = new AlarmServiceState { AlarmConfigurationItemName = item.Value.ConfigName, AlarmServiceStateItems = new Dictionary<string, AlarmServiceStateItem>(), }; item.Value.AlarmReceiverGroupNames.Values.Each(groupName => { alarmServiceState.AlarmServiceStateItems.Add(groupName, new AlarmServiceStateItem { ReceiverGroupName = groupName, AlarmReceiverGroupLastMailMessageTime = DateTime.MinValue, AlarmReceiverGroupLastMobileMessageTime = DateTime.MinValue, }); }); var interval = item.Value.CheckTimeSpan; var timer = new System.Threading.Timer(CheckActionForState, item.Value.ConfigName, interval, interval); alarmServiceState.CheckTimer = timer; alarmServiceStates.Add(alarmServiceState); } AppInfoCenterService.LoggingService.Info(AlarmConfigurationBase.ModuleName, "AlarmService", "Init", string.Format("完成一次报警服务初始化,读取到 {0} 个状态报警,{1} 个统计报警", config.AlarmConfigurationByStates.Count.ToString(), config.AlarmConfigurationByStatistics.Count.ToString())); }
private static void IntervalCheckAction(AlarmConfigurationItemBase configItem, int count, string columnName, AlarmServiceState state, Func <string> getDetail) { var needAction = false; switch (configItem.ConditionType) { case AlarmConditionType.LessThan: { if (count < configItem.Value) { needAction = true; } break; } case AlarmConditionType.LessThanAndEqualTo: { if (count <= configItem.Value) { needAction = true; } break; } case AlarmConditionType.MoreThan: { if (count > configItem.Value) { needAction = true; } break; } case AlarmConditionType.MoreThanAndEqualTo: { if (count >= configItem.Value) { needAction = true; } break; } } if (!needAction) { var logMessage = FormatMessage(AlarmConfiguration.GetConfig().LogMessageTemlate, configItem, count, columnName, null); AppInfoCenterService.LoggingService.Debug(AlarmConfigurationBase.ModuleName, "AlarmService", "IntervalCheckAction", string.Format("{0} 没达到报警条件", logMessage), new ExtraInfo { DropDownListFilterItem1 = "没达到报警条件", DropDownListFilterItem2 = configItem.ConfigName, }); return; } foreach (var groupName in configItem.AlarmReceiverGroupNames.Values) { InternalHandleAlarm(configItem, state.AlarmServiceStateItems[groupName], groupName, count, columnName, getDetail); } }
private static void IntervalCheckAction(AlarmConfigurationItemBase configItem, int count, string columnName, AlarmServiceState state, Func<string> getDetail) { var needAction = false; switch (configItem.ConditionType) { case AlarmConditionType.LessThan: { if (count < configItem.Value) needAction = true; break; } case AlarmConditionType.LessThanAndEqualTo: { if (count <= configItem.Value) needAction = true; break; } case AlarmConditionType.MoreThan: { if (count > configItem.Value) needAction = true; break; } case AlarmConditionType.MoreThanAndEqualTo: { if (count >= configItem.Value) needAction = true; break; } } if (!needAction) { var logMessage = FormatMessage(AlarmConfiguration.GetConfig().LogMessageTemlate, configItem, count, columnName, null); AppInfoCenterService.LoggingService.Debug(AlarmConfigurationBase.ModuleName, "AlarmService", "IntervalCheckAction", string.Format("{0} 没达到报警条件", logMessage), new ExtraInfo { DropDownListFilterItem1 = "没达到报警条件", DropDownListFilterItem2 = configItem.ConfigName, }); return; } foreach (var groupName in configItem.AlarmReceiverGroupNames.Values) { InternalHandleAlarm(configItem, state.AlarmServiceStateItems[groupName], groupName, count, columnName, getDetail); } }