Обработчик продюсера¶
Функция, которая формирует тело сообщения для отправки в Kafka.
Имя модуля и метода указываются в табличной части продюсера — в полях Имя модуля сериализации и Имя метода сериализации.
Сигнатура¶
Параметры¶
| Параметр | Тип | Описание |
|---|---|---|
Объект | СправочникОбъект, ДокументОбъект, ЛюбаяСсылка, Структура, Соответствие | Регистрируемый объект. Подробности — ниже. |
Свойства | Структура | Дополнительные свойства сообщения — см. Поля структуры Свойства |
ТекстЖурнала | Строка | Текст, который будет записан в журнал регистрации |
Отказ | Булево | Установите в Истина для отмены формирования и отправки сообщения |
Что передаётся в Объект¶
| Источник регистрации | Тип Объект | Состав |
|---|---|---|
| Подписка на запись ссылочного объекта | СправочникОбъект, ДокументОбъект и т.п. | Объект ссылочного типа |
ПоместитьВОчередьИсходящих(Ссылка) | ЛюбаяСсылка | Переданная ссылка |
ПоместитьВОчередьИсходящих(Произвольное) | Структура, Соответствие Из Произвольный | Произвольное сообщение |
| Подписка на запись набора РС (Независимый) | Структура | Запись регистра — ключи соответствуют полям регистра, включая ДополнительныеСвойства набора записей |
| Подписка на запись регистра по регистратору | Структура | Описание движений регистра: Регистратор — ДокументСсылка, ДополнительныеСвойства — Структура |
| Удаление объекта | Объект с полями отбора | Свойства.ЭтоУдаление = Истина |
Пустой набор записей
Если при записи регистра набор записей пуст (удаление), флаг Свойства.ЭтоУдаление будет Истина, а в Объект будут только значения полей отбора. Проверяйте флаг перед обращением к полям данных.
Поля структуры Свойства¶
Ссылка на продюсер — в Свойства.Продюсер
Внутри обработчика всегда используйте Свойства.Продюсер, а не поиск в справочнике. Это устойчиво к переименованию и не требует дополнительных запросов к базе. Подробнее — Произвольные события → Как получать ссылку на продюсер.
| Поле | Тип | Описание |
|---|---|---|
Продюсер | СправочникСсылка.кфкПродюсеры | Продюсер сообщения |
ТипОбъект | Строка | Ключ регистрации — имя метаданных 1С или произвольная строка. См. Тип объект — ключ регистрации |
ТипИсходныхДанных | Строка | Тип исходных данных |
СобытиеРегистрации | ПеречислениеСсылка.кфкСобытияРегистрации | Способ регистрации. Проверяйте через кфкИнтеграция.ЭтоРегистрацияПриЗаписи(Свойства), .ЭтоРегистрацияПринудительно(Свойства), .ЭтоРегистрацияПрограммно(Свойства) |
КлючРегистрации | Строка | Уникальный ключ регистрации |
ДатаРегистрации | Дата | Дата и время регистрации события |
ДатаРегистрацииМС | Число | Дата регистрации в миллисекундах |
ПоследняяОбработка | Дата | Дата последней обработки сообщения |
ЭтоУдаление | Булево | Истина, если регистрация вызвана событием удаления |
СсылкаНаОбъект | ЛюбаяСсылка, Неопределено | Ссылка на объект регистрации |
Возвращаемое значение¶
Результат кфкИнтеграция.ПараметрыСообщения() — или Неопределено (сообщение будет отменено):
| Поле | Тип | Описание |
|---|---|---|
Данные | Строка, ДвоичныеДанные, Структура, Массив Из Структура | Тело сообщения |
Ключ | Строка | Уникальный идентификатор сообщения |
Заголовки | Соответствие Из Строка | Заголовки сообщения |
Минимальный пример¶
Функция Сериализация(Объект, Свойства, ТекстЖурнала, Отказ) Экспорт
Результат = кфкИнтеграция.ПараметрыСообщения();
Данные = Новый Структура;
Данные.Вставить("ref", Объект.Ссылка);
Данные.Вставить("name", Объект.Наименование);
Данные.Вставить("deleted", Свойства.ЭтоУдаление);
Результат.Данные = Данные;
Результат.Заголовки.Вставить("ДатаСериализация", ТекущаяУниверсальнаяДата());
Возврат Результат;
КонецФункции
Отмена сообщения¶
Чтобы пропустить отправку конкретного сообщения из обработчика:
Функция Сериализация(Объект, Свойства, ТекстЖурнала, Отказ) Экспорт
Если Не НужноОтправлять(Объект) Тогда
ТекстЖурнала = "Объект не подлежит отправке — " + Объект;
Отказ = Истина;
Возврат Неопределено;
КонецЕсли;
// ...
КонецФункции
Ключ сообщения¶
Если Результат.Ключ не задан, адаптер сформирует ключ автоматически из ключа регистрации. Чтобы управлять партиционированием явно:
Ключ влияет на распределение сообщений по партициям — сообщения с одним ключом попадают в одну партицию, и Kafka гарантирует их порядок.
Смотрите также¶
- Примеры сериализации.
- Программный API — методы
ПараметрыСообщения, проверки регистрации. - Обработчик консьюмера.