Начиная с версии 4.6.90 реализована отправка сообщений систем лояльности через очередь Artix-Queue.
Начиная с версии 4.6.132 реализована отправка сообщений об операциях только через очередь Artix-Queue.
Начиная с версии 4.6.144 пакеты artix-aqspy и artix-queue удалены из кассового ПО Artix. Сервис Artix-Queue входит в состав пакета artix45-core.
Начиная с версии 4.6.160 изменен процесс загрузки справочников на кассу, система сообщений Qpid заменена на очередь File-Queue.
Очередь Artix-Queue
Начиная с версии 4.6.96 при обновлении кассы сервис устанавливается и стартует автоматически. При первоначальной установке для запуска сервиса необходимо перезапустить кассу.
Начиная с версии 4.6.128 реализована возможность отправки транзакций по уникальным купонам, бонусам, сертификатам через разные очереди Artix-Queue.
Обмен сообщениями между сервисами, приложениями и процессами может происходить посредством БД кассовой программы.
Управление сервисом осуществляется командами:
- service queue start
- service queue stop
- service queue restart
Отправка сообщений через очередь Artix-Queue используется при работе с:
- Артикс Бонус
- Артикс Сертификат
- Уникальными купонами
- Внешними системами лояльностей
- Резервированием статуса акцизных марок
- Резервированием статуса кодов маркировки (табак и обувь)
- Акциями со счетчиками
- Универсальным передаточным документом
- Приемом платежей
- Гифтоманом (Giftoman)
Настройки сервиса задаются в файле /linuxcash/cash/queue/config/queue.ini
:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
timeout | целочисленный | Таймаут перезапуска обработчиков | По умолчанию 20 |
port | целочисленный | Порт HTTP-сервера для обработки REST-запросов | По умолчанию 28080 |
[queue] ; Таймаут перезапуска обработчиков ; по умолчанию 20 секунд ;timeout=20 ; Порт HTTP-сервера для обработки REST-запросов ; по умолчанию 28080 ;port=28080
Все сообщения, отправляемые через очередь Artix-Queue, записываются в БД Queues
в таблицу Message
. После добавления в таблицу сообщения обрабатываются сервисом и отправляются адресату, после подтверждения доставки сообщение удаляется из очереди.
Если обработчик (artixbonus и т.п.) не запущен, но в очереди присутствуют сообщения соответствующего типа, то обработчик перезапускается.
Настройки обработчиков хранятся в директории /linuxcash/cash/queue/config/queue.d/
.
Логи работы сервиса Artix-Queue записываются в файл /linuxcash/logs/current/queue.log
. Настройка логирования осуществляется в конфигурационном файле /linuxcash/cash/conf/Artix/queue.conf
, уровень логировнаия по умолчанию - INFO.
При остановке или перезапуске сервиса, а также при завершении работы системы сервис завершает обработку текущего сообщения и после чего останавливается.
При наличии в очереди некорректных сообщений и последующем добавлении сообщений без ошибок сервис последовательно просмотрит все записи и отправит корректные сообщения адресату.
Ошибки работы с очередью Artix-Queue
В случае ошибки добавления сообщений в очередь данные для отправки помещаются в /linuxcash/cash/data/queue/
<типсообщения_дата_время_номер>.queue
. В верхней части экрана будет выведено уведомление "Очередь сообщений недоступна".
При попытке помещения нового сообщения в очередь осуществляется проверка файлов с ошибками и их помещение в очередь сообщений для отправки.
Помещение ошибочных сообщений в очередь осуществляется для всех сообщений:
- обращения к системам лояльности,
- работы с универсальными передаточными документами,
- резервирования на КС акцизных марок алкогольной продукции и кодов маркировки для маркированной продукции.
В случае ошибки добавления сообщений в очередь при закрытии чека работа кассы блокируется, на экран выводится диалог "Ошибка добавления сообщения в Artix-очередь. Проверьте службу MySQL. Повторить попытку подключения?":
- при отказе от операции осуществляется переход в 1-ю консоль для аварийного завершения работы;
- при попытке подключения проверяется доступность БД:
- если БД не была восстановлена, то на экран повторно будет выведен диалог "Ошибка добавления сообщения в Artix-очередь. Проверьте службу MySQL. Повторить попытку подключения?";
- если БД была восстановлена, то диалог закрывается, работа кассы может быть продолжена в обычном режиме. Обработка файлов
/linuxcash/cash/data/queue/
<типсообщения_дата_время_номер>.queue
будет осуществлена при попытке помещения нового сообщения в очередь.
В кассовом ПО Artix предусмотрена возможность проверки состояния БД после закрытия чека, задается параметром checkDatabaseAfterDocumentClose
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [ArtixQueue]
:
- при значении
true
осуществляется проверка состояния БД. Если БД недоступна, то в верхней части экрана будет выведено уведомление "Ошибка подключения к БД"; - при значении
false
проверка состояния БД не осуществляется.
Оповещение о количестве неотправленных сообщений регулируется параметром messagesCountWarning
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [ArtixQueue]
. В верхней части экрана будет выведено уведомление "Большое количество сообщений в очереди (<количество_сообщений>
)".
Оповещение о наличии в очереди старых сообщений регулируется параметром firstMessageDaysWarning
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [ArtixQueue]
. В верхней части экрана будет выведено уведомление "В очереди есть старые сообщения (<дата>
)".
Настройки firstMessageDaysWarning
и messagesCountWarning
работают только при включенной настройке checkDatabaseAfterDocumentClose
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
checkDatabaseAfterDocumentClose | логический |
| Проверка состояния БД после закрытия чека | По умолчанию false |
firstMessageDaysWarning | строковый | Количество дней с момента добавления первого неотправленного сообщения в очереди для вывода предупреждения | По умолчанию -1 (отключено) | |
messagesCountWarning | строковый | Количество сообщений в очереди при достижении которого выводится предупреждение | По умолчанию -1 (отключено) |
[ArtixQueue] ; ; Настройки для очереди Artix ... ; Проверка состояния БД после закрытия чека ; По умолчанию false ;checkDatabaseAfterDocumentClose = false ; Количество дней с момента добавления первого неотправленного сообщения в очереди для вывода предупреждения ; По умолчанию -1 (отключено) ;firstMessageDaysWarning = -1 ; Количество сообщений в очереди при достижении которого выводится предупреждение ; По умолчанию -1 (отключено) ;messagesCountWarning = -1
Очередь File-Queue
Начиная с версии 4.6.160 реализована новая очередь File-Queue для загрузки справочников на кассу.
Загрузка справочников на кассу осуществляется посредством очереди File-Queue, которая представляет собой файловую загрузку. Настройка очереди сообщений File-Queue осуществляется в конфигурационном файле /linuxcash/cash/exchangesystems/exchangers/config/cash/exchangers.ini
в секции [FILEQUEUE]
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
fileQueueRoot | строковый | Путь до корневой директории файл-очереди | По умолчанию /linuxcash/cash/data/queues |
queueChunkSize | целочисленный | Количество aif-объектов в одном сообщении файл-очереди | По умолчанию |
[FILEQUEUE] ; Путь до корневой директории файл-очереди fileQueueRoot = /linuxcash/cash/data/queues ; Количество aif-объектов в одном сообщении файл-очереди queueChunkSize = 25000
Справочник с данными будет расформирован на json-файлы с расширением *.objs
, которые будут помещены в директорию artix.loaddict.cash
, расположение которой задается настройкой fileQueueRoot
. Команды справочника будут распределены по разным файлам. Если на кассу поступает справочник с большим количеством объектов, то он будет разбит на несколько файлов. Количество объектов в одном файле задается настройкой queueChunkSize
. После того, как справочник будет разбит на части, формируется ещё один json-файл с данными об окончании транзакции. После завершения формирования всех файлов объекты будут отправлены на загрузку в базу данных. После завершения загрузки все json-файлы будут удалены из директории.
Если во время расформирования справочника в json-файлы произошла ошибка, то будет осуществлена повторная попытка разбиения справочника.
Более подробно о механизме работы очереди File-Queue можно прочитать в разделе "Очередь".
Система сообщений QPID
Обмен сообщениями - это способ обмена определенными данными между процессами, приложениями и серверами, как виртуальными, так и физическими. Прием, создание очереди сообщений и их передача осуществляется брокером сообщений. Очереди сообщений представляют собой связующее звено между различными процессами в приложении, обеспечивая возможность взаимодействия с другими подключенными системами и устройствами. Использование очередей сообщений позволяет гарантировать доставку и обработку сообщений. Обработка очереди сообщений осуществляется автоматически или по запросу при помощи программы-посредника - брокера сообщений.
Брокер сообщений
В кассовом ПО Artix используется брокер Qpid - система сообщений с открытым кодом, реализующая AMQP протокол. Qpid предоставляет набор инструментов для создания очередей сообщений, защиты и управления транзакциями.
Очередь сообщений позволяет выполнять передачу информации между компонентами системы и используется кассовым ПО для осуществления обменных процессов.
Демон qpidd
является демоном брокера сообщений. Его основная задача - чтение файлов конфигурации очереди, ее создание и запуск, мониторинг работы, а так же непосредственный обмен сообщениями с другими модулями системы. Протокол AMQP основан на трех понятиях:
- Сообщение (
message
) - единица передаваемых данных, основная его часть (содержание) никак не интерпретируется сервером. - Точка обмена (
exchange
) - в нее отправляются сообщения. Точка обмена распределяет сообщения в одну или несколько очередей. При этом в точке обмена сообщения не хранятся. - Очередь (
queue
) - здесь хранятся сообщения до тех пор, пока не будут забраны клиентом. Клиент всегда забирает сообщения из одной или нескольких очередей.
Очередь сохраняется в директории /var/spool/qpid/
.
Управление состоянием процесса производится с помощью утилиты service
. Подробнее о Qpid можно прочитать на официальном сайте.
Очереди сообщений
Для хранения и передачи различных данных используются отдельные очереди, каждая из которых имеет свою структуру и зависит от потребностей системы. Более подробно о механизме работы очереди сообщений можно прочитать в разделе "Очередь".
Очереди, используемые для обмена сообщениями:
reply-ubuntu, qmfc-v2-ubuntu, qmfc-v2-hb-ubuntu, topic-ubuntu, qmfc-v2-ui-ubuntu
- очереди системы;artix.load, artix.backward.cs
- очереди, используемые при обмене.
Команды для работы с очередью сообщений
Просмотр очереди сообщений выполняется по команде:
qpid-stat -q
Просмотр подключений выполняется по команде:
qpid-stat -c
Очистка очереди:
#Запустить qpid-tool qpid-tool #Просмотреть ID очередей list queue #Очистить данные в очереди call <ID очереди> purge 0 {}
Удаление очереди сообщений выполняется по команде:
qpid-config del queue <имя очереди> --force #Пример: qpid-config del queue artix.loaddict.222_shop --force
После удаления очереди сообщений необходимо перезапустить сервисы обмена.
Маршрутизация сообщений
Выгрузка продаж осуществляется через очередь artix.backward.cs
, куда сервис sync-core2
помещает файлы продаж. Контроль доставки сообщений из очереди qpid
на кассовый сервер осуществляется по настройке bridge
, отражающей состояние роутинга сообщений.
Значение статуса роутинга можно посмотреть, выполнив команду:
qpid-config list bridge --show-property sync
При отправке сообщения из qpid
кассы на КС выполняется контроль доставки, после успешной доставки сообщение удаляется из очереди. В случае корректной работы сервисов обмена настройка принимает значение 1. При отсутствии связи сообщения накапливаются в очереди, их отправка возобновляется после того, как связь с кассовым сервером будет восстановлена.
Если при отправке сообщения возникла ошибка, то статус настройки принимает значение 0. Для восстановления контроля необходимо устранить причину и перезапустить сервис sync-core2
.