Сервис отправки сообщений предназначен для рассылки сообщений через telegram-бот и СМС шлюз по номеру телефона.
Установка и настройка сервиса
Для работы сервиса должны быть установлены пакеты java-11-artix, artixcs-apt-config
и artix-postgresql-config
.
Установка сервиса производится командой:
apt-get install artixcs-messaging-service
Настройка работы сервиса осуществляется в конфигурационном файле /opt/artixcs-messaging-service/application.properties
.
В качестве БД сервиса artixcs-messaging-service
допускается использование только Postgresql
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
server.port | целочисленный | Порт сервиса | По умолчанию 12023 |
queue settings | Настройки для подключения к БД очереди сообщений | ||
queue.database.name | строковый | Наименование базы данных | По умолчанию messaging_db .В случае изменения наименования базы данных необходимо создать БД с таким же наименованием |
queue.database.host | строковый | Хост базы данных | По умолчанию localhost |
queue.database.user | строковый | Имя пользователя | По умолчанию netroot |
queue.database.password | строковый | Пароль пользователя | По умолчанию netroot |
queue.database.port | целочисленный | Порт | По умолчанию 5432 |
queue.handler.count | целочисленный | Количество обработчиков очереди рассылки сообщений | По умолчанию Чем больше – тем быстрее будет обрабатываться очередь и расти вычислительные затраты машины |
queue.retry.max_attempts | целочисленный | Количество попыток отправки сообщения в случае неудачи | По умолчанию 5 |
queue.retry.random_delay.start_range.minutes | целочисленный | Минимальное количество минут через которое будет возможна новая попытка отправки сообщения | По умолчанию 5 |
queue.retry.random_delay.end_range.minutes | целочисленный | Максимальное количество минут через которое будет возможна новая попытка отправки сообщения | По умолчанию В случае неудачной попытки отправить сообщение новое сообщение будет отправлено в интервале от 5 ( |
persistence settings | Настройки для подключения к БД сервиса | Если БД очереди сообщений установлена на одной машине с сервисом, то настройки должны совпадать с аналогичными настройками из секции queue settings | |
storage.database.host | строковый | Хост базы данных | По умолчанию localhost |
storage.database.port | целочисленный | Порт | По умолчанию 5432 |
storage.database.name | строковый | Наименование базы данных | По умолчанию messaging_db .В случае изменения наименования базы данных необходимо создать БД с таким же наименованием
|
storage.database.user | строковый | Имя пользователя | По умолчанию netroot |
storage.database.password | строковый | Пароль пользователя | По умолчанию netroot |
telegram settings | Настройки подключения к telegram-боту | ||
messages.telegram.bot.connection.host | строковый | Хост для подключения к telegram-боту | По умолчанию 127.0.0.1 |
messages.telegram.bot.connection.port | целочисленный | Порт для подключения к telegram-боту | По умолчанию 3300 |
messages.telegram.bot.connection.path | строковый | URL для доступа к telegram-боту | По умолчанию bot |
sms settings | Настройки подключения к кассовому серверу для получения настроек СМС шлюзов | ||
messages.sms.cashserver.connection.host | строковый | Хост для подключения к СМС шлюзу на кассовом сервере | По умолчанию 127.0.0.1 |
messages.sms.cashserver.connection.port | целочисленный | Порт для подключения к СМС шлюзу на кассовом сервере | По умолчанию 38051 |
messages.sms.cashserver.connection.path | строковый | URL для доступа к СМС шлюзу на кассовом сервере | По умолчанию CSrest/rest/v2/properties/find/sms/property/templates/by/key |
messages.sms.cashserver.connection.timeout.user | строковый | Имя пользователя для доступа к СМС шлюзу на кассовом сервере | По умолчанию admin |
messages.sms.cashserver.connection.timeout.password | строковый | Пароль пользователя для доступа к СМС шлюзу на кассовом сервере | По умолчанию admin |
messages.sms.cashserver.connection.cache.time_live_sec | целочисленный | Частота запросов к кассовому серверу для получения настроек СМС шлюзов | По умолчанию раз в Настройки подключения к СМС шлюзу при успешном получении с кассового сервера кэшируются на 60 секунд. Если по истечении 60 секунд не получены настройки с кассового сервера, то используются последние актуальные настройки (те, которые были закэшированы в памяти). |
server.port = 12023 # queue settings queue.database.name = messaging_db queue.database.host = localhost queue.database.user = netroot queue.database.password = netroot queue.database.port = 5432 queue.handler.count = 5 queue.retry.max_attempts = 5 queue.retry.random_delay.start_range.minutes = 5 queue.retry.random_delay.end_range.minutes = 10 # persistence settings storage.database.host = localhost storage.database.port = 5432 storage.database.name = messaging_db storage.database.user = netroot storage.database.password = netroot # telegram settings messages.telegram.bot.connection.host = 127.0.0.1 messages.telegram.bot.connection.port = 3300 messages.telegram.bot.connection.path = bot # sms settings messages.sms.cashserver.connection.host = 127.0.0.1 messages.sms.cashserver.connection.port = 38051 messages.sms.cashserver.connection.path = CSrest/rest/v2/properties/find/sms/property/templates/by/key messages.sms.cashserver.connection.timeout.user = admin messages.sms.cashserver.connection.timeout.password = admin messages.sms.cashserver.connection.cache.time_live_sec = 60
Принцип работы
Сервис отправляет сообщения по принципу рассылки с негарантированной доставкой:
- Для каждой рассылки создается задача (БД
Messaging_db
таблицаmailing_tasks
):- если сообщение должно быть отправлено через telegram-бота, то информация о нем записывается в БД
Messaging_db
таблицуtelegram_messages
, - если сообщение должно быть отправлено через СМС шлюз, то информация о нем записывается в БД
Messaging_db
таблицуsms_messages
.
- если сообщение должно быть отправлено через telegram-бота, то информация о нем записывается в БД
- Сообщение помещается в очередь (БД
Messaging_db
таблицаmessaging_queue
). - В случае неудачной попытки отправить сообщение через некоторое время будет выполнена повторная отправка.
- После превышения максимального количества допустимых попыток отправки (настройка
queue.retry.max_attempts
) сообщение удаляется из очереди (см. "Установка и настройка сервиса").
Результаты рассылки записываются в БД Messaging_db
таблицу mailing_results
.
Логирование работы сервиса
Логирование работы сервиса ведется в файле /var/log/artix/artixcs-messaging-service/artixcs-messaging-service.log
.