Прямой API — примеры¶
Сценарий. Синхронная отправка / чтение сообщений без участия очереди и фоновых заданий. Подходит для разовых операций, тестов, команд с ожиданием подтверждения.
Справочное описание методов — Прямой API.
Синхронная отправка — один раз¶
Сообщение = кфкИнтеграция.ПараметрыСообщения("{""event"": ""ping""}", СтрокаUUID());
// Ссылку на продюсер предоставляет сервисный модуль прикладного решения
// (например, читает из настройки/константы своей конфигурации)
Продюсер = СервисныйМодуль.ПродюсерСистемныхСобытий();
Результат = кфкИнтеграция.Отправить(Продюсер, "system-events", Сообщение);
Если Не Результат.Успешно Тогда
ВызватьИсключение Результат.ТекстОшибки;
КонецЕсли;
Откуда брать ссылку на продюсер
Прямой API требует явную ссылку СправочникСсылка.кфкПродюсеры. Получать её следует из сервисного модуля прикладного решения — он сам решает, как хранить идентификатор (константа, параметр ИБ, настройка).
Не используйте Справочники.кфкПродюсеры.НайтиПоНаименованию(...) — переименование в режиме 1С:Предприятие сломает обмен. Предопределённых элементов в справочнике кфкПродюсеры нет и не будет. Подробнее — Произвольные события → Как получать ссылку на продюсер.
Синхронная отправка — пакетом¶
При пакетной отправке держите соединение открытым, передавая общее Соответствие сессий:
Сессии = Новый Соответствие;
Попытка
Для Каждого Элемент Из МассивДанных Цикл
Сообщение = кфкИнтеграция.ПараметрыСообщения(Элемент.JSON, Элемент.Ключ);
// 4-й параметр "Партиция" оставляем по умолчанию (-1 = авто)
кфкИнтеграция.Отправить(Продюсер, "my-topic", Сообщение, , Сессии);
КонецЦикла;
Исключение
кфкИнтеграция.ЗакрытьСессииПродюсера(Сессии);
ВызватьИсключение;
КонецПопытки;
кфкИнтеграция.ЗакрытьСессииПродюсера(Сессии);
Всегда закрывайте сессии
Вызывайте ЗакрытьСессииПродюсера в том числе в блоке исключения — иначе соединение зависнет и будет удерживать ресурсы на сервере 1С.
Синхронное чтение¶
// Ссылку на консьюмер возвращает сервисный модуль прикладного решения
Консьюмер = СервисныйМодуль.КонсьюмерДляСинхронногоЧтения();
Сессии = Новый Соответствие;
// АвтоФиксацияСмещения = Истина — смещения фиксируются автоматически и периодически в фоне
Результат = кфкИнтеграция.Прочитать(Консьюмер, Истина, Сессии);
Если Результат.Успешно И Результат.Сообщение <> Неопределено Тогда
Тело = Результат.Сообщение.Тело;
Ключ = Результат.Сообщение.Ключ;
Топик = Результат.Сообщение.Топик;
Раздел = Результат.Сообщение.Раздел;
Смещение = Результат.Сообщение.Смещение;
ОбработатьСообщение(Тело, Ключ);
КонецЕсли;
кфкИнтеграция.ЗакрытьСессииКонсьюмера(Сессии);
Когда выбирать¶
- Синхронная команда с ожиданием ответа — прямой API.
- Чтение одного сообщения для диагностики или теста — прямой API.
- Регулярный обмен, миллион сообщений в сутки — очередь (не прямой API).
Смотрите также¶
- Прямой API — обзор — справочник методов.
- Произвольные события — отправка через очередь.