github NuclearAPK/Simple-Kafka_Adapter v1.9.1

6 hours ago

Внешняя компонента (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 #73
  • date (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

Don't miss a new Simple-Kafka_Adapter release

NewReleases is sending notifications on new releases.