Установка и настройка модуля#
Модуль рассылки уведомлений (далее – Модуль) предназначен для уведомления пользователя в Системе о полученных заявлениях на предоставление услуг, о получении ответа на межведомственные запросы, о необходимости изучения или согласования документа.
Является отдельным приложением, основная задача которого - мониторинг изменений в Системе через таблицы аудита (таблицы с префиксом «l_»).
См.также
Возможности модуля Рассылки уведомлений, его настройки, а также работа с уведомлениями описаны в разделе Возможности модуля.
Задать конфигурацию#
Сервис#
Конфигурация задается в файле appsettings.json.
Также существует файл appsettings.Development.json, который будет переписывать значения основного файла конфигурации, если не выставлен runtime для release.
{
"AllowedHosts": "*",
// Адрес endpoint'а сервисе, по которому будет доступен health-check
"urls": "http://localhost:5089",
"ConnectionStrings": {
// Строка подключения к БД
"DefaultConnection":
"Server=172.16.55.113;Port=5432;Database=kazan;User Id=postgres;Password=qwerty123;ApplicationName=IasPgV3;",
// Строка подключения к БД для создания и вычитывания таблицы notify_created, которая содержит данные о созданных уведомлениях. У пользователя должны быть права на создание и вычитывание таблицы в схемах.
"NotifyCreated":
"Server=172.16.55.113;Port=5432;Database=kazan;User Id=postgres;Password=qwerty123;ApplicationName=IasPgV3;",
},
"ObjectCardUrlService": {
// Адрес основного веб-приложения, доступный с пользовательских машин. Участвует в формировании ссылки на карточку объекта
"WebAppUrl": "http://localhost:5000"
},
"MailSending": {
// Тип отправителя. Доступные значения:
// NotificationService.Tools.MailSenders.SmtpMailSender - отправка по smtp
// NotificationService.Tools.MailSenders.ExchangeMailSender - отправка средствами exchange
"SenderTypeName": "NotificationService.Tools.MailSenders.SmtpMailSender",
// Настройки пользователя, от имени которого ведется отправка писем
"Sender": {
// Логин учетной записи отправителя на почтовом сервере (если учетная запись не привязана к ActiveDirectory, то может совпадать с From)
"Login": null,
// Домен учетной записи отправителя (заполняется в случае доменной учетной записи)
"Domain": null,
// Пароль учетной записи отправителя на почтовом сервере
"Password": null,
// Email отправителя
"From": "TestSender@test.ru",
// Host почтового сервера
"Host": "smtp.test.ru",
// Порт почтового сервера
"Port": null,
// Флаг использования учетной записи по умолчанию при подключении к почтовому серверу.
// Выставляется в false, если для подключения используется конкретная учетная запись,
// данные которой задаются в Login, Domain, Password
"DefaultCredentials": true,
// Флаг использования ssl-соединения при подключении к почтовому серверу
"Ssl": false
}
},
"Logging": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Debug",
"System": "Warning",
"Microsoft": "Warning"
}
},
"AppSettings": {
"maxConcurrency": "2",
"maxRev": "2000000"
}
}
//"maxConcurrency" - ограничивает число потоков для SemaphoreSlim. Необходим для ситуации, когда возникает проблема с большим количеством параллельно работающих запросов к БД. Рекомендуемое значение 2.
//"maxRev" - разделяет большой интервал ревизий на несколько интервалов меньшей длины. Необходим для ситуации, когда сервис находится в состоянии простоя (выключен) и накапливается большой интервал необработанных ревизий. Рекомендуемое значение 2000000.
Пример заполнения настроек smtp для Яндекс почты (поле Domain
в некоторых случаях заполнять не нужно. Обычно Domain
используется, когда логин происходит от имени доменных учетных записей):
"Sender": {
"Login": "mgis@kzn.ru",
"Domain": "",
"Password": "pass",
"From": "mgis@kzn.ru",
"Host": "smtp.yandex.ru",
"Port": "587",
"DefaultCredentials": false,
"Ssl": true
}
Логгер#
Конфигурация задается в файле notification.nlog.config. По умолчанию переменная «moduleName», участвующая в формировании пути к файлу с логом, заполнена значением «notification».
Сборка#
Сборка сервиса встроена в общий скрипт сборки системы buildForUnixModulesAndProducts.bat.
Результатом сборки является архив NotificationService.zip и файл публикации NotificationServiceDeploy.
Публикация#
Публикация выполняется через bash-скрипт NotificationServiceDeploy, который при сборке, по аналогии с остальными сервисами системы такого же типа, помещается в директорию с результатами сборки.
Для выполнения скрипта необходимы:
файл развертывания NotificationServiceDeploy;
рядом с ним должен находиться архив с результатами сборки сервиса NotificationService.zip;
файл конфигурации NotificationServiceConfig.json.
Пример скрипта:
sudo bash /<путь до результатов сборки NotificationService >/NotificationServiceDeploy -installDir=/opt/NotificationService -configFile=/home/user/NotificationServiceConfig.json
где:
installDir
– это директория, в которую будет установлен сервис. Предполагается, что директория с артефактом сборки (путь до результатов сборки NotificationService) отличается от директории, куда будет установлен сервис (значение параметра installDir).configFile
– это файл конфигурации сервиса для текущего внедрения. Файл конфигурации сервиса для каждого внедрения формируется и складывается на целевой сервер отдельно, в примере – NotificationServiceConfig.json. Этот файл формируется из appsettings.json, заполняя параметры для внедрения. При публикации в скрипт передается адрес, по которому лежит рабочий файл конфигурации для текущего внедрения. В процессе публикации все файлы конфигурации удаляются из сборки и на их место копируется указанный файл конфигурации. При копировании наименование файла конфигурации меняется на appsettings.json.
Установить модуль в систему#
Для настройки и работы модуля рассылки уведомлений необходимо обновить основное приложение с установкой дополнительного модуля системы. Для этого в терминале выполнить команду установки приложения.
Пример команды установки:
sudo bash /<путь до результатов сборки>/IASUnixDeploy -installDir=/opt/ IAS -connectionString='Server=localhost;Port=5432;Database=db;User Id=user;Password=pass;Connection Idle Lifetime=5;Connection Pruning Interval=3;Maximum Pool Size=500;' -extraModule=Gems.Module.Notification
где:
installDir – директория, в которую установлено основное приложение,
connectionString – строка подключения к базе данных. Заключена в кавычки и состоит из набора обязательных параметров:
Server – доменное имя или IP-адрес сервера баз данных
Port – порт сервера баз данных
Database – имя базы данных
User Id – имя пользователя базы данных
Password – пароль пользователя базы данных
Connection Idle Lifetime – время жизни в секундах подключения к БД без активности
Connection Pruning Interval – интервал в секундах через который удаляются сессии с превышенным временем жизни
Maximum Pool Size – количество сессий в пуле соединений
extraModule – параметр установки дополнительных модулей системы.
Альтернативным вариантом установки дополнительного модуля системы является копирование папки модуля Gems.Module.Notification в папку директории /opt/IAS/AppServer/Modules.
После этого под учетной записью суперпользователя (sudo su) необходимо перезапустить приложение для применения изменений.
Команда для перезапуска приложения:
systemctl restart Gems.Ias.ApplicationServer.service
Установить компоненты БД#
Также для работы модуля уведомлений необходимо установить компонент базы данных (КБД) «Modules.Notification». Для установки КБД используется утилита Gems.cli. (Подробнее: cli-database)
Пример строки установки компонента:
dotnet gems.cli.dll db-migrate-standalone –c 'строка подключения к БД' –o 'Modules.Notification'