Simple Kafka Adapter v1.8.1
Дата выпуска: 28 января 2026
Основные изменения
Улучшенная работа с AVRO
Значительно переработан функционал декодирования AVRO сообщений. Теперь компонента корректно работает с различными форматами AVRO данных и предоставляет новый метод для извлечения схемы.
Новый метод: ПолучитьСхемуAVRO / GetAvroSchema
Извлекает схему из AVRO файла в формате OCF и возвращает её в виде JSON строки.
ДанныеAVRO = Новый ДвоичныеДанные("C:\Data\orders.avro");
СхемаJSON = Компонента.ПолучитьСхемуAVRO(ДанныеAVRO);
Сообщить(СхемаJSON);
Поддержка нескольких форматов AVRO
Метод ДекодироватьСообщениеAVRO теперь автоматически определяет формат входных данных:
| Формат | Описание | Требуется схема |
|---|---|---|
| Avro OCF | Object Container File (Obj1)
| Нет |
| Confluent Wire Format | Schema Registry формат | Да |
| Raw Avro | Данные без контейнера | Да |
Исправлено аварийное завершение
Устранено критическое падение компоненты при вызове ДекодироватьСообщениеAVRO с параметром asJson=true. Сериализация в JSON полностью переписана для стабильной работы.
Анализ размера топиков
Новый метод ПолучитьРазмерТопика / GetTopicSize позволяет получить размер топика в байтах.
Результат = Компонента.ПолучитьРазмерТопика("bootstrap:9092", "my-topic", 30000);
// {"total_bytes": 1234567, "message_count": 1000, "partitions": [...]}
Настраиваемый таймаут остановки консьюмера
Новый метод УстановитьТаймаутОчисткиКонсьюмера / SetConsumerCloseTimeout позволяет настроить время ожидания при остановке консьюмера (по умолчанию 10 секунд).
Компонента.УстановитьТаймаутОчисткиКонсьюмера(5000); // 5 секунд
Улучшенная обработка ошибок
Методы ОстановитьПродюсера и ОстановитьКонсьюмера теперь возвращают Ложь в случае ошибки:
- Таймаут операций flush/close
- Недоставленные сообщения в очереди
- Ошибки при закрытии соединений
Текст ошибки доступен через ПолучитьСообщениеОбОшибке().
Обновление
При обновлении с версии 1.8.0:
- Совместимость API: Все существующие вызовы остаются совместимыми
- Изменение поведения:
ДекодироватьСообщениеAVROсasJson=falseтеперь возвращает raw Avro данные (без OCF контейнера), а не исходный файл
Полный список изменений
Добавлено
ПолучитьСхемуAVRO/GetAvroSchema- извлечение схемы из AVRO файлаПолучитьРазмерТопика/GetTopicSize- получение размера топика в байтахУстановитьТаймаутОчисткиКонсьюмера/SetConsumerCloseTimeout- настройка таймаута остановки консьюмера
Изменено
- Автоматическое определение формата AVRO (OCF, Confluent Wire Format, Raw Avro)
- Переработана сериализация AVRO в JSON (std::ostringstream вместо boost::json)
- Улучшена обработка опциональных параметров в методах AVRO
ОстановитьПродюсераиОстановитьКонсьюмератеперь возвращаютЛожьпри ошибках
Исправлено
- Аварийное завершение при декодировании AVRO с
asJson=true - Ошибка "Invalid data file. Magic does not match" для raw Avro данных
- Обработка
Неопределенов параметрахДекодироватьСообщениеAVRO
Ссылки
- Документация AVRO
- Документация Producer
- Документация Consumer
- Полный CHANGELOG