예제 #1
0
        private Parametr _botParam; //с каким ботом телеграмма работаем

        public void Start() //метод вызывается при старте службы
        {
            try
            {
                Sender.Send(
                    "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=" +
                    "Запущен сервис DutyBot");
                try
                {
                    using (var repository = new Repository<DutyBotDbContext>())
                    {
                        var logReccord = new Log
                        {
                            Date = DateTime.Now,
                            MessageTipe = "info",
                            UserId = 0,
                            Operation = "StartService",
                            Exception = "",
                            AddInfo = ""
                        };
                        repository.Create(logReccord);
                    }
                }
                catch (Exception ex)
                {
                    Thread.Sleep(30000); // еcли не доступна БД и не получается залогировать запуск, ждём 30 секунд и пробуем еще раз.
                    try
                    {
                        using (var repository = new Repository<DutyBotDbContext>())
                        {
                            var exReccord = new Log
                            {
                                Date = DateTime.Now,
                                MessageTipe = "error",
                                UserId = 0,
                                Operation = "StartService",
                                Exception = ex.GetType() + ": " + ex.Message,
                                AddInfo = ""
                            };
                            repository.Create(exReccord);
                            var logReccord = new Log
                            {
                                Date = DateTime.Now,
                                MessageTipe = "info",
                                UserId = 0,
                                Operation = "StartService2",
                                Exception = "",
                                AddInfo = ""
                            };
                            repository.Create(logReccord);
                        }
                    }
                    catch
                    {
                        Sender.Send(
                            "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=Произошла ошибка при запуске службы. Подождал 10 секунд, попробовал еще раз, но ошибка осталась: " +
                            ex);
                    }
                }

                using (var repository = new Repository<DutyBotDbContext>()) //инициализирую парамтры приложения
                {
                    _botParam = repository.Get<Parametr>(p => p.Name == "TelegramBot");
                    _jiraParam = repository.Get<Parametr>(p => p.Name == "jira");
                    _userLoginParam = repository.Get<Parametr>(p => p.Name == "dafaultuserlogin");
                    _userPasswordParam = repository.Get<Parametr>(p => p.Name == "dafaultuserpassword");
                    _filterParam = repository.Get<Parametr>(p => p.Name == "Filter");
                }
                _bot = new TelegramBot(_botParam.Value);
                BufferBlock<Message> queue = new BufferBlock<Message>();
                Task.WhenAll(ReadMessages(queue), ProcessMessages(queue), Checkjira(), queue.Completion); //запускаю задачи по считыванию и обработке сообщений из telegramm
            }
            catch (Exception ex)
            {
                Sender.Send(
                    "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=" +
                    ex.Message);
                using (var repository = new Repository<DutyBotDbContext>())
                {
                    var logReccord = new Log
                    {
                        Date = DateTime.Now,
                        MessageTipe = "fatal",
                        UserId = 0,
                        Operation = "StartService",
                        Exception = ex.GetType() + ": " + ex.Message,
                        AddInfo = ""
                    };
                    repository.Create(logReccord);
                }
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: tied/JiraWatcher
        private Parametr filterParam;       //какой фильтр мониторим

        public void Start()                 //метод вызывается при старте службы
        {
            try
            {
                try //пишем в лог о запуске службы
                {
                    using (var repository = new Repository <DbContext>())
                    {
                        var logReccord = new Log
                        {
                            Date        = DateTime.Now,
                            MessageTipe = "info",
                            Operation   = "StartService",
                            Exception   = ""
                        };
                        repository.Create(logReccord);
                    }
                }
                catch (Exception ex)
                {
                    Thread.Sleep(60000);                                  // еcли не доступна БД и не получается залогировать запуск, ждём 60 секунд и пробуем еще раз.
                    using (var repository = new Repository <DbContext>()) //использую репозиторий для работы с БД, какая будет БД указано в DbContext
                    {
                        repository.Create(new Log                         //создаю объект Log и пишу его в БД
                        {
                            Date        = DateTime.Now,
                            MessageTipe = "error",
                            Operation   = "StartService",
                            Exception   = ex.GetType() + ": " + ex.Message
                        });
                        repository.Create(new Log
                        {
                            Date        = DateTime.Now,
                            MessageTipe = "info",
                            Operation   = "StartService2Attemp",
                            Exception   = ""
                        });
                    }
                }

                using (var repository = new Repository <DbContext>()) //инициализирую парамтры приложения из БД
                {
                    jiraParam         = repository.Get <Parametr>(p => p.Name == "jira");
                    userLoginParam    = repository.Get <Parametr>(p => p.Name == "dafaultuserlogin");
                    userPasswordParam = repository.Get <Parametr>(p => p.Name == "dafaultuserpassword");
                    filterParam       = repository.Get <Parametr>(p => p.Name == "Filter");
                }
                //метод в бесконечном цикле будет проверять jira
                Task tsk = new Task(CheckJira);
                tsk.Start();
            }
            catch (Exception ex)
            {
                using (var repository = new Repository <DbContext>())
                {
                    repository.Create(new Log
                    {
                        Date        = DateTime.Now,
                        MessageTipe = "fatal",
                        Operation   = "StartService",
                        Exception   = ex.GetType() + ": " + ex.Message
                    });
                }
            }
        }