Маршруты
Маршрут — правило доставки, связывающее класс сообщения + систему-источник + систему-приёмник в рамках одной компании. Только при наличии маршрута сообщение, отправленное источником, попадает к получателю.
Структура маршрута
Маршрут — это тройка:
- Класс сообщения — какой тип сообщений маршрутизируется.
- Источник — какая система-отправитель.
- Приёмник — какая система-получатель.
У одного класса может быть произвольное число маршрутов с разными парами «источник-приёмник» — это позволяет настраивать сложные топологии: один источник → много приёмников, много источников → один приёмник, разные пары для разных условий.
Направленность
Маршрут направленный: сообщение идёт от источника к приёмнику, обратное движение по этому же маршруту невозможно. Если в обмене должны участвовать обе стороны (источник иногда становится приёмником и наоборот), создаются два отдельных маршрута, по одному в каждую сторону, на тот же или разные классы.
Это позволяет точно различать роли каждой системы в каждом потоке и не делать неявных предположений о двусторонности.
Поведение шины при отправке
В момент, когда отправитель публикует сообщение, шина выполняет три проверки в указанном порядке:
- Класс сообщения существует в компании? Если нет — отправитель получает ошибку, сообщение не принимается.
- Есть маршруты для пары (этот отправитель + этот класс)? Если нет — сообщение успешно принимается, но никому не доставляется. Это штатная ситуация «нет получателей», не ошибка.
- Маршруты есть — копии сообщения раскладываются в очереди систем-приёмников из этих маршрутов. По одной копии в каждую очередь.
Поведение «класс есть, маршрутов нет — тихая недоставка без ошибки» — намеренное. Оно позволяет источнику работать единообразно, не зная, есть ли реальные получатели его сообщений. Появление получателя в будущем — это просто новый маршрут в личном кабинете, без изменений на стороне источника.
Маршрут как контракт согласия
В DataHUB нет отдельной модели «прав» на отправку — формально любая зарегистрированная ИС может отправить сообщение любого зарегистрированного в её компании класса. Реально регулирует обмен маршрут: пока его нет, ни один получатель сообщения не получит.
Создание маршрута — это явное решение администратора шины, что данный приёмник готов принимать данный поток данных от данного источника. До этого решения никакие сообщения новых типов не «вливаются» в неподготовленную систему. После — маршрут начинает действовать сразу для следующих сообщений.
Поведение при отсутствии обработчика на приёмнике
Доставка сообщения по маршруту — это половина дела. Вторая половина — наличие на стороне приёмника обработчика для этого класса.
Если маршрут существует и сообщение доставлено, но обработчика для класса в модуле приёмника нет (или он отключён) — модуль штатно забирает сообщение из своей очереди и переводит его в специальный статус (в типовом модуле для 1С — «Отсутствует обработчик»). Очередь шины при этом не блокируется, другие сообщения продолжают приходить и обрабатываться. Зависшее сообщение остаётся в локальном пуле модуля и ждёт ручного разбора.
Это разделение ответственности — шина гарантирует доставку, модуль гарантирует обработку. Они проверяются независимо. Поэтому корректный порядок подключения нового класса: сначала обработчик в модуле приёмника, потом маршрут в личном кабинете шины.
Что дальше
- Информационные системы — что регистрируется в качестве источника и приёмника.
- Классы сообщений — что маршрутизируется.
- Обработчики интеграции — что должно существовать на приёмнике, чтобы доставленное сообщение было применено.
- Очереди сообщений — куда шина кладёт сообщение после маршрутизации.
- Личный кабинет / Маршруты — практика настройки.