Интеграция систем на различных платформах


#1

Всем привет!

Очень интересует следующий вопрос: к примеру, имеется розничный бизнес, точки продаж сильно географически разнесены. Связь, понятное дело, бывает разная.
В каждой точке имеется POS-система, которая в части интеграции умеет только выгружать файлы. Ситуация довольно распространенная, насколько мне известно.

Задача - максимально оперативно и надежно передавать данные в “центральную” систему. Причем, помимо стандартного набора данных по закрытию смены, в центральной системе есть необходимость иметь данные о продажах в оперативном режиме.
POS-система умеет выгружать файлы в локальные и сетевые каталоги как по закрытию смены, так и по отдельным транзакциям за выбранный период. Но это все равно файлы.

Собственно, вопросы:
Что делать, если центральная система умеет работать с AMQP, а системы-producer’ы - нет?

Насколько целесообразно считать сообщением появление файла в каталоге выгрузки?

Как без доработки producer’а сделать так, чтобы файл вставал в очередь при появлении в каталоге?

Что делать с файлом после того, как он будет обработан (удален из очереди)? Какой компонент должен за этой отвечать?


Мне видится, что на стороне POS для этих целей должен быть настроен еще один программный модуль.
Изучение документации навело на мысль об Apache Camel.
Подскажите, верное ли направление мысли?
Какие еще имеются варианты?


#2

rabbitmq в центре + rabbitmq с federation plugin хоть на каждой кассе. Ну и адаптер для касс необходимо написать, который будет из файлов перекладывать в очередь и удалять файлы после отправки. Аналогично можно и в другую сторону.


#3

Добрый день! Расскажите есть ли вариант организации шины данных реального времени бэкофиса на 1сv8 и фронта на 1сv7.7 по средствам Yellow Rabbit.


#4

Есть схема такого обмена через урбд. Надо?:slight_smile:


#5

во-первых, шину из реббита сделать не получится (по крайней мере, пока valerina не зарелизена)

во-вторых, речь идет о событийной интеграции, и это явно не обмен файликами :smiley:


#6

Да пофиг. Я за 7 лет впервые вижу, чтобы кому-то еще понадобилось такое:)


#7

зоопарк систем может быть разный, и не обязательно, что должна быть 1С и/или только 1С, просто шина это шина, по сути, отдельная система, и дорогая во внедрении и поддержке


#8

Добрый день. В составе YellowRabbit нет коннектора к 1с 7.7. Если не очень критична скорость, то вы можете из восьмерошного бэкэнда слать данные через YellowRabbit, а на стороне семерки получать данные посредством http-интерфейса рэббита.


#9

Скорость в общем то критична. Предполагается посылать запрос из бэка во фронт и дожидаться ответа для продолжения обработки в бэке. Также предполагается и в обратную сторону. Сейчас реализовано между семерками через шлюзовые таблицы на сервере sql и следящих сеансов во фронтах.


#10

HTTP-соединение конечно дает свой оверхэд на обработку, но если у вас частые мелкие запросы, то просадка скорости будет не критична. Не в течение одной секунды, а, к примеру, за 2-3 секунды (цифры из головы).


#11

Вы случаем не из Воронежа ;-). Шутка.

В 7.7 нет отдельного потока исполнения, как например фоновые задания, поэтому требует запущенного клиента - в вашем случае Фронт подписчик.

Компоненты для RMQ для 7.7 не делалось.

НО нужно призвать @JohnyDeath и @artbear - Артур, Жень, мы на 1С++ помнится как-то (или при помощи компонент Душелова вызывали C# объекты) - но я не могу найти линк

Это будет конечно “не быстро” и течь по памяти - но для 7.7 это будет наверное единственный вариант

https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html


#12

Здесь наверное не Воронеж, а больше на Саратов похоже :wink:

Если по теме, то ВК не от Душелова, а от Steban-а под названием v7CLR.dll. Подробнее здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1210542476

(почти 10 лет назад. Жесть. Как давно оказывается это было)