Наиболее нетерпеливые могут сразу перейти к разделу "Практика" =)
Вторая часть (продолжение): "DaJet Exchange: двусторонний обмен РИБ (часть 2)"
В своих публикациях "Планы обмена 1С" и "Анализ блокировок СУБД: таблица изменений плана обмена 1С" я подробно анализирую архитектуру планов обмена 1С. Этот типовой механизм обмена данными имеет ряд существенных недостатков, которые особенно ярко проявляются при интенсивных обменах в больших информационных системах. Для преодоления этих недостатков возникает вопрос об использовании альтернативных механизмов обмена данными.
На рынке существует достаточное количество известных и зарекомендовавших себя с хорошей стороны решений, в том числе от самой фирмы 1С. Кроме этого постоянно появляются всё новые и новые "самоделки". В данной публикации они обсуждаться не будут.
Отмечу лишь только то, что некоторые из этих решений используют в качестве альтернативы планам обмена регистрацию изменений объектов 1С в регистрах сведений, которые они используют в качестве таблиц-очередей. Для получения представления о технических подробностях реализации этой методики можно обратиться к моим публикациям: "Планы обмена 1С" (раздел "Альтернатива планам обмена") и "Использование таблиц SQL Server в качестве очередей сообщений".
Целью же данной публикации является желание разобраться каким образом можно реализовать оптимальное решение и предложить свой взгляд на решение проблемы.
Забегая вперёд, я хочу сказать, что методика использования регистров сведений в качестве таблиц регистрации изменений имеет свои недостатки и является, по моему мнению, не полным решением проблемы.
Первым делом необходимо сформулировать функциональные требования к такой системе обмена данными, которую я считаю оптимальной. При этом данная публикация будет ограничена рассмотрением только таких задач как регистрация изменений объектов 1С и их фиксация в исходящей очереди сообщений.
Информационная база (узел обмена) 1С выполняет только три функции:
- регистрация изменений объектов 1С;
- формирование сообщения об изменении в формате JSON;
- помещение сообщения в исходящую очередь в одной транзакции с изменением объекта 1С.
Наиболее важным требованием является то, что любые операции по обмену данными должны выполняться без ожиданий на блокировках СУБД!
Все остальные функции обмена данными, например, обработка сообщений, их маршрутизация и доставка адресатам выполняется внешней по отношению к узлу обмена 1С системой.
Кроме этого, хорошо было бы иметь возможность управлять регистрацией изменений, составом объектов 1С, участвующих в обмене данными, без изменения конфигурации узла обмена 1С.
Агент обмена данными для выгрузки сообщений из SQL Server,
на котором работает сервер 1С с подсистемой DaJet Exchange.
Из справочника DaJetExchangeQueue в очередь RabbitMQ.
Реализован режим онлайн (риалтайм) обмена данными.
Агент может быть установлен как Windows сервис.
Дистрибутив можно скачать здесь.