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

Обработчик продюсера

Функция, которая формирует тело сообщения для отправки в Kafka.

Имя модуля и метода указываются в табличной части продюсера — в полях Имя модуля сериализации и Имя метода сериализации.

Сигнатура

Функция Сериализация(Объект, Свойства, ТекстЖурнала, Отказ) Экспорт

Параметры

Параметр Тип Описание
Объект СправочникОбъект, ДокументОбъект, ЛюбаяСсылка, Структура, Соответствие Регистрируемый объект. Подробности — ниже.
Свойства Структура Дополнительные свойства сообщения — см. Поля структуры Свойства
ТекстЖурнала Строка Текст, который будет записан в журнал регистрации
Отказ Булево Установите в Истина для отмены формирования и отправки сообщения

Что передаётся в Объект

Источник регистрации Тип Объект Состав
Подписка на запись ссылочного объекта СправочникОбъект, ДокументОбъект и т.п. Объект ссылочного типа
ПоместитьВОчередьИсходящих(Ссылка) ЛюбаяСсылка Переданная ссылка
ПоместитьВОчередьИсходящих(Произвольное) Структура, Соответствие Из Произвольный Произвольное сообщение
Подписка на запись набора РС (Независимый) Структура Запись регистра — ключи соответствуют полям регистра, включая ДополнительныеСвойства набора записей
Подписка на запись регистра по регистратору Структура Описание движений регистра: РегистраторДокументСсылка, ДополнительныеСвойстваСтруктура
Удаление объекта Объект с полями отбора Свойства.ЭтоУдаление = Истина

Пустой набор записей

Если при записи регистра набор записей пуст (удаление), флаг Свойства.ЭтоУдаление будет Истина, а в Объект будут только значения полей отбора. Проверяйте флаг перед обращением к полям данных.

Поля структуры Свойства

Ссылка на продюсер — в Свойства.Продюсер

Внутри обработчика всегда используйте Свойства.Продюсер, а не поиск в справочнике. Это устойчиво к переименованию и не требует дополнительных запросов к базе. Подробнее — Произвольные события → Как получать ссылку на продюсер.

Поле Тип Описание
Продюсер СправочникСсылка.кфкПродюсеры Продюсер сообщения
ТипОбъект Строка Ключ регистрации — имя метаданных 1С или произвольная строка. См. Тип объект — ключ регистрации
ТипИсходныхДанных Строка Тип исходных данных
СобытиеРегистрации ПеречислениеСсылка.кфкСобытияРегистрации Способ регистрации. Проверяйте через кфкИнтеграция.ЭтоРегистрацияПриЗаписи(Свойства), .ЭтоРегистрацияПринудительно(Свойства), .ЭтоРегистрацияПрограммно(Свойства)
КлючРегистрации Строка Уникальный ключ регистрации
ДатаРегистрации Дата Дата и время регистрации события
ДатаРегистрацииМС Число Дата регистрации в миллисекундах
ПоследняяОбработка Дата Дата последней обработки сообщения
ЭтоУдаление Булево Истина, если регистрация вызвана событием удаления
СсылкаНаОбъект ЛюбаяСсылка, Неопределено Ссылка на объект регистрации

Возвращаемое значение

Результат кфкИнтеграция.ПараметрыСообщения() — или Неопределено (сообщение будет отменено):

Поле Тип Описание
Данные Строка, ДвоичныеДанные, Структура, Массив Из Структура Тело сообщения
Ключ Строка Уникальный идентификатор сообщения
Заголовки Соответствие Из Строка Заголовки сообщения

Минимальный пример

Функция Сериализация(Объект, Свойства, ТекстЖурнала, Отказ) Экспорт

    Результат = кфкИнтеграция.ПараметрыСообщения();

    Данные = Новый Структура;
    Данные.Вставить("ref",      Объект.Ссылка);
    Данные.Вставить("name",     Объект.Наименование);
    Данные.Вставить("deleted",  Свойства.ЭтоУдаление);

    Результат.Данные = Данные;
    Результат.Заголовки.Вставить("ДатаСериализация", ТекущаяУниверсальнаяДата());

    Возврат Результат;

КонецФункции

Отмена сообщения

Чтобы пропустить отправку конкретного сообщения из обработчика:

Функция Сериализация(Объект, Свойства, ТекстЖурнала, Отказ) Экспорт
    Если Не НужноОтправлять(Объект) Тогда
        ТекстЖурнала = "Объект не подлежит отправке — " + Объект;
        Отказ = Истина;
        Возврат Неопределено;
    КонецЕсли;
    // ...
КонецФункции

Ключ сообщения

Если Результат.Ключ не задан, адаптер сформирует ключ автоматически из ключа регистрации. Чтобы управлять партиционированием явно:

Результат.Ключ = Строка(Объект.Ссылка.УникальныйИдентификатор());

Ключ влияет на распределение сообщений по партициям — сообщения с одним ключом попадают в одну партицию, и Kafka гарантирует их порядок.


Смотрите также