Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Panel

Поддержка сервиса push-уведомлений для accounting-сервера начинается с версии сборки 3.0.250

Сервис запускается только под 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
  • false

Если в БД не сохранено время последнего прочитанного события - начинать искать записи с текущего момента:

  • При значении параметра true все события, которые были созданы до первого запуска сервиса будут игнорироваться.
  • При значении параметра false все события, которые были созданы до первого запуска сервиса, будут сформированы и отправлены на внешний сервис.

По умолчанию true


su.artix.accounting.event.notifier.type

строковый
  • ARTIX
  • TDERA
Тип сервиса, на который будут отправляться события
 



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, с которой требуется генерировать события

  • При размещении сервиса на одной машине с бонусным сервером используется mongodb://localhost/local
  • При размещении сервиса на отдельной машине необходимо указать адрес до oplog MongoDB

su.artix.accounting.event.notifier.retry.count

числовой
 

Количество ошибок, по достижении которого останавливается обработка ошибок.По умолчанию 50


Code Block
titleПример настройки
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

логический
  • true
  • false
Генерировать события по изменению баланса

По умолчанию 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

логический
  • true
  • false
Указывать в событии баланс по счету после применения операций начисления/списания

По умолчанию false

При значении true производительность accounting-сервера может сильно просесть


Code Block
titleПример настройки
### Отправка сигналов об изменении баланса на счетах ###
#включить генерацию событий по изменению баланса. События генерируются на основе команды комита 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
  • СУБД 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