Установка и настройка модуля#

Модуль рассылки уведомлений (далее – Модуль) предназначен для уведомления пользователя в Системе о полученных заявлениях на предоставление услуг, о получении ответа на межведомственные запросы, о необходимости изучения или согласования документа.

Является отдельным приложением, основная задача которого - мониторинг изменений в Системе через таблицы аудита (таблицы с префиксом «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'