Внешняя компонента Apache kafka для 1C.
Нативная внешняя компонента написанная на Rust/C++ для удобного взаимодействия с брокером сообщений Apache Kafka без реализации внешних прокси сервисов.
Работает на Windows и Linux.
Основная логика написана на Rust, что снижает вероятность утечки памяти, по сравнению с разработкой на С++, но при этом дает быстродействие сопоставимое с приложениями на С++.
Реализованы следующие функции:
- Получение сообщений из топика;
- подтверждение получения;
- отправка сообщения в топик;
- работа с заголовками;
- подключение по SSL;
- авторизация через логин/пароль (SASL).
Компонента поставляется в двух формах, в платной и бесплатной. У бесплатной версии есть одно ограничение, на размер сообщения - 2'000 символов. Компонента поставляется в виде конфигурации с примерами и обработкой КлиентKafka, которая является оберткой над компонентой, для более удобной работы с ее методами из кода. Для использования необходимо скопировать обработку КлиентKafka в конфигурацию, вся работа реализуется через эту обработку.
Скачать можно в разделе Релизы
Репозиторий содержит только бинарные релизы.
Для приобретения полной версии можно связаться с автором по телеграм.
Телеграм канал с прочей информацией о внешних компонентах автора.
Телеграм канал с прочими видео автора.
Это только базовые примеры, более подробно можно посмотреть в видео обзоре.
Так же примеры есть в конфигурации, с которой поставляется компонента.
Так можно почитать обзорную статью по компоненте.
КлиентKafka = Обработки.КлиентKafka.Создать();
КонфигурацияОтправителя = КлиентKafka.КонфигурацияОтправителя();
КлиентKafka.ДобавитьНастройку(КонфигурацияОтправителя, "bootstrap.servers", "192.168.0.159:9092");
Отправитель = КлиентKafka.СоздатьОтправителя(КонфигурацияОтправителя);
Заголовки = Новый Массив;
КлиентKafka.ДобавитьЗаголовокСообщения(Заголовки, "ТипДанных", "text");
Топик = "1CRefs";
Ключ = "refs";
Сообщение = КлиентKafka.СоздатьСоообщение(Отправитель, Топик, "text message", Ключ,, Заголовки);
Ответ = КлиентKafka.ОтправитьСообщение(Сообщение);
// !!! обязательно удалить экземпляр отправителя, если он больше не нужен
Ответ = КлиентKafka.УдалитьОтправителя(Отправитель);
КлиентKafka = Обработки.КлиентKafka.Создать();
Топик = "1CRefs";
Теги = "Тест";
Группа = "group1";
Таймаут = 30;//сек.
КонфигурацияПотребителя = КлиентKafka.КонфигурацияПотребителя(Топик, Теги, Таймаут);
КлиентKafka.ДобавитьНастройку(КонфигурацияПотребителя, "group.id", Группа);
КлиентKafka.ДобавитьНастройку(КонфигурацияПотребителя, "bootstrap.servers", "192.168.0.159:9092");
КлиентKafka.ДобавитьНастройку(КонфигурацияПотребителя, "enable.auto.commit", "false");
КлиентKafka.ДобавитьНастройку(КонфигурацияПотребителя, "auto.offset.reset", "earliest");
Канал = КлиентKafka.НачатьПолучениеСообщений(КонфигурацияПотребителя);
Сообщение = КлиентKafka.ПолучитьСообщение(Канал);
РезультатПодтверждения = КлиентKafka.СохранитьСмещение(Сообщение);