...
Panel |
---|
Поддержка сервиса push-уведомлений для Сервис запускается только под java8. |
Следующий пункт для mongo 2.4
Для mongo 3.4 и выше не нужно
Для работы сервиса необходимо в конфигурационном файле /etc/mongodb.conf
установить параметр:
...
Настройка работы сервиса может быть осуществлена в конфигурационном файле application.properties
, который помещается в ту же директорию, что и jar-файл.
Наименование | Тип данных | Возможные значения | Описание | Примечания | |
---|---|---|---|---|---|
server.port | числовой |
Порт, на котором будет поднят rest для управления сервисом | Управление состоянием сервера можно осуществлять через rest-api, который доступен для просмотра по адресу http://<host>:<server.port>/swagger-ui.html | ||
su.artix.accounting.event.notifier.group.duration | числовой |
Задержка в секундах, в течении которого будут группироваться операции для почекового объединения |
su.artix.accounting.event.notifier.mongo.send.event.expired.seconds | числовой |
Время в секундах, в течение которого информация об отправленных транзакциях будет храниться |
su.artix.accounting.event.notifier.begin.from.current | логический |
| Если в БД не сохранено время последнего прочитанного события - начинать искать записи с текущего момента:
| По умолчанию true | |
su.artix.accounting.event.notifier.type | строковый |
| Тип сервиса, на который будут отправляться события |
ARTIX | su.artix.accounting.event.notifier.rest.sender.prefix | строковый |
http-префикс внешнего сервиса, на который будут отправляться полученные события | К примеру, при указании http:10.10.10.10:80/a/b/c/event/ сервисом будет генерироваться POST запрос по адресу http:10.10.10.10:80/a/b/c/event/send | |
su.artix.accounting.event.notifier.rest.sender.user | строковый |
Логин пользователя для basic-авторизации на внешнем сервисе | По умолчанию admin | ||
su.artix.accounting.event.notifier.rest.sender.password | строковый |
Пароль пользователя, от имени которого будет производиться basic-авторизация на внешнем сервисе | По умолчанию admin |
TDERA | su.artix.accounting.event.notifier.rest.tdera.url | строковый |
URL, на который будет отправляться POST-запрос | К примеру, при указании http:10.10.10.10:80/a/b/c/event/ сервисом будет генерироваться POST запрос по адресу http:10.10.10.10:80/a/b/c/event/update | ||
su.artix.accounting.event.notifier.rest.tdera.auth | строковый |
Заголовок в POST-запросе для авторизации | Значение из параметра в неизменном виде будет передано в заголовке Authorization | |
su.artix.accounting.event.notifier.rest.tdera.sender | строковый |
Название отправителя | По умолчанию artix | ||||
su.artix.accounting.event.notifier.data.protocol.version | строковый | VERSION_1 | Внутренняя версия протокола между accounting-сервером и данным сервисом push-уведомлений. Не влияет на формат сообщения, посылаемый внешнему сервису | В настоящее время доступна только VERSION_1. | |
su.artix.accounting.event.notifier.data.mongodb.collection.name | строковый |
Наименование коллекции, из которой будут извлекаться данные о событиях |
spring.data.mongodb.uri | строковый |
Доступ до oplog MongoDB, с которой требуется генерировать события |
| |
su.artix.accounting.event.notifier.retry.count | числовой |
Количество ошибок, по достижении которого останавливается обработка ошибок. | По умолчанию 50 |
Code Block | ||
---|---|---|
| ||
server.port=8090 ################## # Задержка в миллисекундах, в течении которого будут группироваться операции для почекового объединения su.artix.accounting.event.notifier.group.duration=10000 # Время (в секундах) - сколько будет храниться информация о посланных транзакциях. # Чем больше значение - тем больше времени может простаивать "принимающий" события сервер. # С другой стороны, чем больше это значение, тем большая нагрузка будет на СУБД. Параметр нужно подбирать эмпирически su.artix.accounting.event.notifier.mongo.send.event.expired.seconds=3600 # Если в БД не сохранено время последнего прочитанного события - начинать искать записи с текущего момента su.artix.accounting.event.notifier.begin.from.current=true ################## # Тип сервиса, на который будут слаться события: [ARTIX,TDERA] su.artix.accounting.event.notifier.type=ARTIX ################## # Для ARTIX su.artix.accounting.event.notifier.rest.sender.prefix=http://localhost:8083/rest/sender/ su.artix.accounting.event.notifier.rest.sender.user=admin su.artix.accounting.event.notifier.rest.sender.password=admin ################## # TDERA формат сообщения su.artix.accounting.event.notifier.rest.tdera.url=http://in.gates.wp.tdera.ru/customer/balance/ su.artix.accounting.event.notifier.rest.tdera.auth=Bearer YXJ0aXhfa2Fzc2E6YXJ0aXhfa2Fzc2FfdGVzdA== su.artix.accounting.event.notifier.rest.tdera.sender=artix ################## #Версия протокола, согласно которому сервис будет извлекать данные из коллекции с событиями. На текущий момент доступна только VERSION_1 su.artix.accounting.event.notifier.data.protocol.version=VERSION_1 su.artix.accounting.event.notifier.data.mongodb.collection.name=oplog.$main spring.data.mongodb.uri=mongodb://localhost/local # После этого количества ошибок сервис уйдет в состояние ERROR и перестанет обрабатывать сообщения. # Состояние можно получить запросов GET http://localhost:${server.port}/v1/state su.artix.accounting.event.notifier.retry.count=50 |
...
В сообщении передаются поля:
Поле | Тип данных | Описание | Примечания |
---|---|---|---|
number | string | Номер карты |
accountNumber | string | Номер счета |
amountAdd | long | Сумма начислений, на которую изменился баланс карты после последних событий |
amountSub | long | Сумма списаний, на которую изменится баланс карты после последних событий | Всегда не больше 0 |
balance | long | Активный баланс карты после последних событий | Указывается при наличии данных Accounting-сервер передает информацию только при включенной настройке |
balanceInactive | long | Неактивный баланс карты после последних событий | |
date | date | Дата и время выполнения операции с бонусами | Формат даты YYYY-MM-DDThh:mm:ss+0000. При почековом объединении начислений сервис отправляет несколько транзакций, поэтому date берется для одной из входящих в объединение транзакций |
cashId | string | Идентификатор кассы | Значения полей получаются из sessionId. Если этих данных нет, то они не передаются в запросе. |
shiftNum | integer | Номер смены | |
checkNum | integer | Номер чека | |
sessionId | string | Идентификатор начислений | При почековом объединении начислений сервис отправляет несколько транзакций, поэтому sessionId указывается для одной из входящих в объединение транзакций |
Сервис уведомлений о сгорании бонусов
...
Состав данных, которые будут передаваться на внешние сервисы, определяется выбранными настройками. При включении настройки accounting.changeBalance.event.enabled
сервис будет отправлять сообщения, содержащие информацию в формате описанном выше. Для отправки в сообщении не только данных об изменении баланса, но и значение баланса, который установлен на карте после начисления/списания, необходимо для параметра accounting.changeBalance.event.sendBalance
установить значение true (активный параметр влияет на производительность).
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
accounting.changeBalance.event.enabled | логический |
| Генерировать события по изменению баланса | По умолчанию false |
accounting.changeBalance.event.protocol.version | строковый | VERSION_1 | Внутренняя версия протокола между accounting-сервером и данным сервисом push-уведомлений. Не влияет на формат сообщения, посылаемый внешнему сервису | В настоящее время доступна только VERSION_1 |
accounting.changeBalance.event.mongodb.uri | строковый |
Параметры подключения к БД Mongo, в которую производится запись событий об изменении баланса |
accounting.changeBalance.event.mongodb.database | строковый |
Название БД, в которую записываются события об изменении баланса |
accounting.changeBalance.event.sendBalance | логический |
| Указывать в событии баланс по счету после применения операций начисления/списания | По умолчанию false При значении true производительность accounting-сервера может сильно просесть |
Code Block | ||
---|---|---|
| ||
### Отправка сигналов об изменении баланса на счетах ### #включить генерацию событий по изменению баланса. События генерируются на основе команды комита asset, т.е. операции сгорания бонусов в данных событиях НЕ БУДЕТ accounting.changeBalance.event.enabled = false #Версия протокола, согласно которому сервис будет извлекать данные из коллекции с событиями. На текущий момент доступна только VERSION_1 accounting.changeBalance.event.protocol.version=VERSION_1 #Параметры подключения к БД mongodb, в которую будут писаться события об изменении баланса accounting.changeBalance.event.mongodb.uri = mongodb://localhost #Название БД mongodb, в которую будут писаться события об изменении баланса accounting.changeBalance.event.mongodb.database = accountingEvent #Указывать в событии баланс по счету ПОСЛЕ применения операции. Внимание! Включение опции может серьезно просадить производительность! accounting.changeBalance.event.sendBalance = false |
...
В случае, когда принимающий сервис примет сообщение, но в ответ вернется код, не лежащий в диапазоне диапазоне [200...300)], то такое сообщение также будет отправлено повторно.
...
- Accounting-сервер версии выше 3.0.250. Нужно указать следующие настройки в файле конфигурации
/opt/virgo/repository/usr/accounting-logic-properties.properties
, после чего перезапустить сервис:- accounting.changeBalance.event.enabled = true
- accounting.changeBalance.event.protocol.version = VERSION_1
- accounting.changeBalance.event.mongodb.uri = mongodb://2.2.2.2
- accounting.changeBalance.event.mongodb.database = accountingEvent
- accounting.changeBalance.event.enabled = true
- СУБД Mongodb версии выше 2.x (предположим, что она запущена на машине с IP: 2.2.2.2, причем accounting-сервер и сервер push-уведомлений имеет до нее доступ; при необходимости для БД можно настроить аутентификацию, в примере она не используется).
- Сервис push-уведомлений. Нужно указать следующие настройки в файле конфигурации application.properties (указаны параметры, отвечающие за подключение к коллекции с изменением баланса):
- su.artix.accounting.event.notifier.data.protocol.version = VERSION_1
- su.artix.accounting.event.notifier.data.mongodb.collection.name = event
- spring.data.mongodb.uri = mongodb://2.2.2.2/accountingEvent