Отправка произвольного события¶
Сценарий. Отправить событие, не связанное с конкретным объектом метаданных — например, доменное событие «пользователь вошёл в систему», «заказ отменён», «алерт».
Код¶
Событие = Новый Структура;
Событие.Вставить("event", "user.login");
Событие.Вставить("user", ТекущийПользователь().Имя);
Событие.Вставить("timestamp", ТекущаяДатаСеанса());
// Готовое сообщение — сериализация пропускается
Сообщение = кфкИнтеграция.ПараметрыСообщения(Событие, СтрокаUUID());
// Маршрутизация выполняется по ТипОбъект — этот ключ настроен в продюсере
// в табличной части «Объекты метаданных». Ссылку на сам продюсер указывать не нужно.
кфкИнтеграция.ПоместитьВОчередьИсходящих(Сообщение, "system.events");
Как работает¶
ПараметрыСообщения(Данные, Ключ)формирует готовое описание сообщения.- При передаче готового описания в
ПоместитьВОчередьИсходящихэтап сериализации пропускается — данные считаются уже подготовленными. ТипОбъект("system.events"в примере) — ключ регистрации. Адаптер ищет продюсер, у которого в табличной части «Объекты метаданных» есть строка с точно таким же значением в колонке «Тип объект».
Произвольный ключ vs имя метаданных
"system.events" — намеренно не совпадает с именем метаданных 1С. Это означает, что автоматическая регистрация при записи объектов не сработает — сообщения будут попадать в топик только через явный вызов ПоместитьВОчередьИсходящих(..., "system.events").
Если бы в продюсере было указано "Справочник.Номенклатура", то помимо API-вызовов сработала бы ещё и подписка на запись справочника. Подробнее — Тип объект — ключ регистрации.
Как получать ссылку на продюсер¶
Прикладному коду редко нужна прямая ссылка на продюсер — правильный путь зависит от сценария:
| Сценарий | Как получать продюсер |
|---|---|
| Внутри обработчика продюсера | Свойства.Продюсер — ссылка уже передана в параметре, дополнительный поиск не нужен. См. Обработчик продюсера — поля Свойства. |
| В прикладном коде при постановке в очередь | Не указывайте продюсер явно — передавайте ТипОбъект, и адаптер сам выберет продюсер, настроенный на этот тип. |
Не используйте НайтиПоНаименованию
При переименовании продюсера пользователем обмен сломается без предупреждения. Предопределённых элементов в справочнике кфкПродюсеры нет и не планируется — адаптер нейтрален к конкретным продюсерам вашей конфигурации.
Добавление заголовков¶
Заголовки — это полезные метаданные, которые принимающая сторона может использовать без разбора тела:
Сообщение = кфкИнтеграция.ПараметрыСообщения(Событие, СтрокаUUID());
Сообщение.Заголовки.Вставить("source", "crm");
Сообщение.Заголовки.Вставить("content-type", "application/json");
Сообщение.Заголовки.Вставить("version", "1");
кфкИнтеграция.ПоместитьВОчередьИсходящих(Сообщение, , Продюсер);