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); } } }
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 }); } } }