示例#1
0
        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()));
        }
示例#2
0
        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()));
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }