Внешняя компонента (Native API) для интеграции 1С:Предприятие с Apache Kafka.
Артефакт SimpleKafka1C64_1_9_1.zip содержит компоненту для Windows (.dll) и Linux (.so) x86_64 и MANIFEST.XML.
Ниже сведены изменения с версии 1.8.8 включительно.
[1.9.1] - 2026-06-01
Добавлено
- Метод
GetProcessId(ПолучитьИдентификаторПроцесса) — возвращает идентификатор процесса (PID), в котором выполняется компонента. Позволяет однозначно определить запущенную компоненту в диспетчере задач (Windows) или вps/top(Linux) и при необходимости завершить подпроцесс — актуально для изолированного режима подключения. Реализует issue #75
Изменено
Avro — формат вывода даты/времени
timestamp-millisпри распаковке больше не добавляет суффиксZ. Avro хранит значение в UTC без информации о часовом поясе, поэтомуZизбыточен и мешал разбору строки в типДатана стороне 1С.time-millisиtimestamp-millisпри распаковке выводят дробную часть (.fff) только если миллисекунды не равны нулю. ТипДатав 1С имеет секундную точность, поэтому хвост.000при нулевых мс убран как лишний. Пример:2026-06-01T14:30:00вместо2026-06-01T14:30:00.000Z, но2026-06-01T14:30:00.123сохраняется при наличии мс.- Сторона упаковки не изменилась: ISO-строки с
Z, timezone-offset и дробной частью по-прежнему принимаются.
[1.9.0] - 2026-05-30
Добавлено
Avro — логические типы
decimal(logicalType: decimalповерхbytesилиfixed) — корректная сериализация и десериализация с учётомprecisionиscale. Распакованное значение возвращается в JSON как число (например,1234.56), при упаковке принимается число или строка. Реализована собственная big-integer арифметика (two's complement big-endian) для поддержкиprecision> 18 без сторонних зависимостей. Исправляет issue #73date(logicalType: dateповерхint) — при упаковке принимается ISO-строка"YYYY-MM-DD"или число (дней с эпохи); при распаковке возвращается ISO-строкаtime-millis(logicalType: time-millisповерхint) — при упаковке принимается ISO-строка"HH:MM:SS[.fff]"или число (мс с полуночи); при распаковке возвращается ISO-строкаtimestamp-millis(logicalType: timestamp-millisповерхlong) — при упаковке принимается ISO-строка"YYYY-MM-DDTHH:MM:SS[.fff]Z"(с опциональным timezone-offset) или число (мс с эпохи UTC); при распаковке возвращается ISO-8601 UTC строка с суффиксомZ. Конвертация часового пояса между локальным временем 1С и UTC остаётся на стороне 1С. Исправляет issue #74
Изменено
Avro — поведение вывода (breaking change)
- Поля с logicalType
decimal,date,time-millis,timestamp-millisтеперь возвращаются в распакованном JSON в человекочитаемом виде, а не как сырые байты/целые числа. Если ваш код 1С разбирал hex-строки байтов или целые числа дней/мс — потребуется адаптация. При упаковке поддерживаются оба варианта (новый строковый и старый числовой), поэтому обратная совместимость на стороне записи сохранена
[1.8.8] - 2026-05-22
Исправлено
Consumer
StopConsumer/ОстановитьКонсьюмера— удалён вызов глобальногоRdKafka::wait_destroyed()изstopConsumer(). Эта функция ждёт уничтожения всех хэндлов librdkafka в процессе, а не конкретного консьюмера, и почти всегда возвращала таймаут (-1) на Windows, из-за чего метод выдавал ложно-отрицательный результат с сообщениемConsumer wait_destroyed timeout: -1 object(s) still exist(значение-1было кодом таймаута, а не количеством объектов). Теперь метод возвращаетЛожьтолько если самRdKafka::KafkaConsumer::close()завершился с ошибкой. Сам close + delete консьюмера уже выполняли всю значимую работу, поэтому функциональное поведение не меняется
Устарело
Consumer
SetConsumerCloseTimeout/УстановитьТаймаутОчисткиКонсьюмера— метод оставлен для обратной совместимости как no-op. После удаления вызоваwait_destroyedсохранённое значение нигде не читается. Существующий код 1С продолжает работать без изменений; в будущих мажорных версиях метод может быть удалён
Полный список изменений: CHANGELOG.md