Перейти к содержанию

Классы сообщений

Класс сообщения — тип передаваемого через шину сообщения. Каждое сообщение принадлежит ровно одному классу, и этот класс определяет, как сообщение маршрутизируется и какой обработчик его применяет на стороне приёмника.

Что описывает класс

Класс — это идентификатор типа в рамках компании. На уровне шины класс минималистичен: у него есть наименование (уникальное в компании) и описание для людей. Никаких структур, схем, обязательных полей в личном кабинете шины не задаётся.

Содержательная сторона — структура payload, правила валидации, согласование версий — живёт вне шины: в проектной документации обмена и в коде клиентских модулей. Шина оперирует классом как ярлыком: «это сообщение типа X», без интерпретации его содержимого.

Где используется класс

Одна и та же запись о классе используется:

  • На стороне отправителей — для маркировки формируемых сообщений.
  • На стороне приёмников — для выбора обработчика.
  • В личном кабинете шины — для построения маршрутов и фильтрации логов.

Наименование

Наименование класса — свободное, выбирается администратором. Например: Catalog_Контрагенты, Document_РеализацияТоваровУслуг, Catalog_ПричиныДефектов.

Наименование стабильно: оно попадает в служебные данные каждого сообщения этого класса и в обработчики приёмников. Переименование класса задним числом — серьёзная операция; обычно вместо переименования заводят новый класс и постепенно мигрируют участников.

Что НЕ задаётся в классе

  • Структура payload, обязательные/опциональные поля, типы значений — это контракт между участниками обмена, фиксируется проектной документацией, не записью в личном кабинете.
  • Версионирование — отдельной модели версий у класса в DataHUB нет. Если требуются несовместимые изменения, обычно заводят новый класс рядом со старым и постепенно мигрируют маршруты.

Поведение при отправке

Когда отправитель публикует сообщение, шина в первую очередь проверяет, существует ли в компании указанный класс. Если класса нет — отправитель получает ошибку, сообщение не принимается. Если класс есть — шина смотрит маршруты для этого класса и раскладывает копии сообщения по очередям подписанных получателей.

При этом ни одна система не получает «по умолчанию» сообщения какого-либо класса. Для каждого потока нужен явный маршрут.

Что дальше