nuclearapk / simple-kafka_adapter Goto Github PK
View Code? Open in Web Editor NEWПростой адаптер для 1С (пишем, читаем)
License: Apache License 2.0
Простой адаптер для 1С (пишем, читаем)
License: Apache License 2.0
Подскажите как использовать "Компонента.ПолучитьСообщениеОбОшибке();"?
На данный момент после подключения компоненты и "Компонента.ИнициализироватьКонсьюмера(БрокерСообщений, Топик)" пробую получить сообщения об ошибках. Платформа выдает ошибку:
Метод объекта не обнаружен (ПолучитьСообщениеОбОшибке)
{ОбщийМодуль.ИнтеграцияСKafka.Модуль(105)}:ОписаниеОшибки = Компонента.ПолучитьСообщениеОбОшибке();
{Обработка.РаботаСKafka.Форма.Форма.Форма(174)}:ИнтеграцияСKafka.ПолучитьСообщенияЧерезКоньсюмера(Компонента, ПараметрыКомпоненты, БрокерСообщений, Топик, Таймаут);
{Обработка.РаботаСKafka.Форма.Форма.Форма(40)}:ПолучениеСообщенийИзТопикаНаСервере();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Будет ли работать с аналогом кафки https://docs.redpanda.com ?
Логи:
Продюссер:
Коньюмер:
Добрый день.
Возможно ли получение partition аналогично получению смещения, через функцию?
partition в json не возвращается, и по этой причине нет возможности зафиксировать смещение.
Из за отсутствия возможности зафиксировать смещение, консьюмер читает каждый раз сначала, а не с последнего места.
Привет. сразу скажу что мои знания в с++ на уровне 2 курса института.
Я пытаюсь наладить сборку под линукс в докере
У меня вот такой выхлоп с ошибками
RUN cmake .. && cmake --build .:
#13 0.294 -- The C compiler identification is GNU 13.1.0
#13 0.346 -- The CXX compiler identification is GNU 13.1.0
#13 0.353 -- Detecting C compiler ABI info
#13 0.401 -- Detecting C compiler ABI info - done
#13 0.408 -- Check for working C compiler: /usr/bin/cc - skipped
#13 0.408 -- Detecting C compile features
#13 0.409 -- Detecting C compile features - done
#13 0.411 -- Detecting CXX compiler ABI info
#13 0.477 -- Detecting CXX compiler ABI info - done
#13 0.485 -- Check for working CXX compiler: /usr/local/bin/c++ - skipped
#13 0.485 -- Detecting CXX compile features
#13 0.486 -- Detecting CXX compile features - done
#13 0.487 -- Configuring done
#13 0.489 -- Generating done
#13 0.490 -- Build files have been written to: /app/build
#13 0.518 [ 20%] Building CXX object CMakeFiles/SimpleKafka1C.dir/src/dllmain.cpp.o
#13 0.532 [ 40%] Building CXX object CMakeFiles/SimpleKafka1C.dir/src/exports.cpp.o
#13 0.995 [ 60%] Building CXX object CMakeFiles/SimpleKafka1C.dir/src/Component.cpp.o
#13 1.698 [ 80%] Building CXX object CMakeFiles/SimpleKafka1C.dir/src/SimpleKafka1C.cpp.o
#13 2.765 In file included from /usr/include/boost/bind.hpp:30,
#13 2.765 from /usr/include/boost/property_tree/json_parser/detail/parser.hpp:7,
#13 2.765 from /usr/include/boost/property_tree/json_parser/detail/read.hpp:13,
#13 2.765 from /usr/include/boost/property_tree/json_parser.hpp:16,
#13 2.765 from /app/src/SimpleKafka1C.cpp:4:
#13 2.765 /usr/include/boost/bind.hpp:36:1: note: '#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.'
#13 2.765 36 | BOOST_PRAGMA_MESSAGE(
#13 2.765 | ^~~~~~~~~~~~~~~~~~~~
#13 3.019 In file included from /app/src/SimpleKafka1C.h:14,
#13 3.019 from /app/src/SimpleKafka1C.cpp:8:
#13 3.019 /app/src/Component.h: In instantiation of 'void Component::AddMethod(const std::wstring&, const std::wstring&, C*, T (C::*)(Ts ...), std::map<long int, std::variant<std::monostate, int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> > > >&&) [with T = long int; C = SimpleKafka1C; Ts = {}; std::wstring = std::__cxx11::basic_string<wchar_t>]':
#13 3.019 /app/src/SimpleKafka1C.cpp:110:14: required from here
#13 3.019 /app/src/Component.h:213:46: error: could not convert 'std::apply<long int (SimpleKafka1C::* const&)(), tuple<SimpleKafka1C*> >(f, std::tuple_cat(_Tpls&& ...) [with _Tpls = {tuple<SimpleKafka1C*>, tuple<>&}; <template-parameter-1-2> = void; typename __tuple_cat_result<_Tpls ...>::__type = __tuple_cat_result<tuple<SimpleKafka1C*>, tuple<>&>::__type](args))' from 'long int' to 'variant_t' {aka 'std::variant<std::monostate, int, double, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> > >'}
#13 3.019 213 | return std::apply(f, std::tuple_cat(std::make_tuple(c), args));
#13 3.019 | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#13 3.019 | |
#13 3.019 | long int
#13 3.442 gmake[2]: *** [CMakeFiles/SimpleKafka1C.dir/build.make:118: CMakeFiles/SimpleKafka1C.dir/src/SimpleKafka1C.cpp.o] Error 1
#13 3.442 gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/SimpleKafka1C.dir/all] Error 2
#13 3.442 gmake: *** [Makefile:91: all] Error 2
------
executor failed running [/bin/sh -c cmake .. && cmake --build .]: exit code: 2
Что-то с библиотекой boost?
Устанавливаю вот такие зависимости
RUN apt-get update && \
apt-get install -y \
libboost-dev libboost-program-options-dev \
libgtest-dev \
cmake \
librdkafka-dev
Возможно нужно ставить не последнюю версию? (если да то какую?)
И может это влиять на вторую ошибку return std::apply(f, std::tuple_cat(std::make_tuple(c), args));?
текущий докерфайл
FROM gcc:latest as build
RUN apt-get update && \
apt-get install -y \
libboost-dev libboost-program-options-dev \
libgtest-dev \
cmake \
librdkafka-dev
ADD ./src /app/src
ADD ./lib /app/lib
ADD ./include /app/include
ADD ./CMakeLists.txt /app/CMakeLists.txt
WORKDIR /app/build
RUN cmake .. && \
cmake --build .
Думаю здесь надо вывести в лог или интерактивно ошибку, а так по тихому возвращается пустая строка и не ясно почему
Здравствуйте
Мне надо подключиться к брокеру с такими параметрами:
SSL настройки:
security.protocol=SASL_SSL
ssl.endpoint.identification.algorithm=
ssl.truststore.location=/path/to/kafka.client.truststore.jks
ssl.truststore.password=
ssl.keystore.location=/path/to/kafka.client.keystore.jks
ssl.keystore.password=
ssl.key.password=
SASL настройки
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required
username="<sasl_user>"
password=”<sasl_password>”;
При попытке использовать SSL для консьюмера:
Компонента.УстановитьПараметр("security.protocol", "SASL_SSL");
Компонента.УстановитьПараметр("ssl.truststore.location", НастройкиПодключения.SslTruststoreLocation);
Компонента.УстановитьПараметр("ssl.truststore.password", НастройкиПодключения.SslTruststorePassword);
Компонента.УстановитьПараметр("ssl.keystore.location", НастройкиПодключения.SslKeystoreLocation);
Компонента.УстановитьПараметр("ssl.keystore.password", НастройкиПодключения.SslKeystorePassword);
Компонента.УстановитьПараметр("ssl.key.password", НастройкиПодключения.SslKeyPassword);
Компонента.УстановитьПараметр("sasl.mechanism", "PLAIN");
Компонента.УстановитьПараметр("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=""" + НастройкиПодключения.SaslUser + """ password=""" + НастройкиПодключения.SaslPassword + """");
В логах ошибки:
2023-05-17 20:27:15.568: Java TrustStores are not supported, use `ssl.ca.location` and a certificate file instead. See https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka for more information.
2023-05-17 20:31:39.769: Java JAAS configuration is not supported, see https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka for more information.
Подскажите как подключиться с такими параметрами, который предоставил брокер для клиентов?
Файлы kafka.client.truststore.jks, kafka.client.keystore.jks, логины и пароли у меня есть
Подскажите, пожалуйста, из-за чего возникает следующая проблема при попытке сборки компоненты в ОС windows:
Ошибка LNK2001 неразрешенный внешний символ "__GSHandlerCheck_EH4" SimpleKafka1C C:\Users\Victoria\Downloads\Simple-Kafka_Adapter-1.2.1\Simple-Kafka_Adapter-1.2.1\build\rdkafka++.lib(QueueImpl.cpp.obj)
Сборка осуществляется в Visual Studio 2017, версия пакета SDK 10.0.17763.0
Платформа 8.3.15.
Подскажите из вашего опыта, как лучше поступить. На каждый сервис запускать своего слушателя или лучше запустить одного?
Что то сломали, теперь при передаче заголовок виснет намертво, если заголовки не задавать все отправляет нормально
КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.SimpleKafka", "Integration", ТипВнешнейКомпоненты.Native);;
Компонента = Новый("AddIn.Integration.simpleKafka1C");
Компонента.УстановитьПараметр("queue.buffering.max.ms", "1");
Компонента.УстановитьПараметр("socket.blocking.max.ms", "1");
Компонента.УстановитьПараметр("message.timeout.ms", "5000");
Компонента.УстановитьПараметр("compression.codec", "lz4");
Компонента.УстановитьПараметр("message.max.bytes", "10485760");
ИДТранзакции = Строка(Новый УникальныйИдентификатор);
Заголовки = "key1,test1;key2,test2";
РезультатИнициализации = Компонента.ИнициализироватьПродюсера("localhost:19092");
Результат = Компонента.ОтправитьСообщениеСОжиданиемРезультата("test", "Express",,ИДТранзакции,Заголовки);
Здравствуйте
Пытаюсь 1с подключить к kafka
Поставил confluent, подключил компоненту Simple-Kafka_Adapter, задал параметр Компонента.УстановитьПараметр("bootstrap.servers", "my_test_server:9092")
В итоге Результат = Компонента.ИнициализироватьКонсьюмера(Брокер, Топик) - Результат = Ложь
КаталогЛогов задан и права на него есть - логи не появились
Подскажите в чём проблема?
Добрый день.
1.Подскажите, я правильно понимаю что для того чтобы мне указать порт и местонахождение сервера, ssl и прочее я должен использовать
SetParameter УстановитьПараметр Все параметры указаны в https://github.com/confluentinc/librdkafka/blob/master/CONFIGURATION.md
Если да, какой разделитель если несколько параметров.
- Создание топиков отдельно делается?, не нашел в компоненте метода
В нескольких местах используется ссылка, но файл не существует. Можно добавить?
При регситрации библиотеки в системе:
C:\Windows\SysWOW64>regsvr32.exe ./SimpleKafka1C64_1_4_2.dll
Получаю ошибку:
"Модуль SimpleKafka1C64_1_4_2.dll загружен, но точка входа DllRegisterServer не найдена. Проверьте, что «SimpleKafka1C64_1_4_2.dll» является правильным файлом DLL или OCX и повторите попытку»."
Подскажите, пожалуйста, что я делаю не так ?
Подскажите, в чем может быть проблема?
Компонента = СоздатьКомпонентуКафкаКлиент();
Если Компонента = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураПодключения = РегламентныхЗаданийОбщий.ПолучитьСтруктуруПодключения("_ЗаписьКафка");
Если ТипЗнч(Данные) <> Тип("Массив") Тогда
Сообщения = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Данные);
Иначе
Сообщения = Данные;
КонецЕсли;
Если СтруктураПодключения.Параметры.Свойство("КаталогЛогов")
И ЗначениеЗаполнено(СтруктураПодключения.Параметры.КаталогЛогов) Тогда
Компонента.КаталогЛогов = СтруктураПодключения.Параметры.КаталогЛогов;
КонецЕсли;
Брокеры = СтрЗаменить(СтруктураПодключения.Хост, "http://", "");
Топик = СтруктураПодключения.Параметры.ИмяТопика;
// инициализируем подключение к брокеру
// достаточно указать одного брокера из кластера, либо есть возможность перечислить брокеров через ,
РезультатИнициализации = Компонента.ИнициализироватьПродюсера(Брокеры);
Если РезультатИнициализации Тогда
Для Каждого СообщениеВКафку Из Сообщения Цикл
// Parametr1 - Тело сообщения (строка)
// Parametr2 - Топик (строка)
// Parametr3 - Номер партиции, по умолчанию = -1 (число)
// Parametr4 - Произвольный ключ, идентифицирующий сообщение, например GUID (строка)
// Parametr5 - Заголовки (строка), "ключ1,значение1;ключ2,значение2"
ИДТранзакции = Строка(Новый УникальныйИдентификатор);
Заголовки = ""; //"key1,test1;key2,test2";
РезультатОтправки = Компонента.ОтправитьСообщение(СообщениеВКафку, Топик, 0, ИДТранзакции, Заголовки);
Если Не РезультатОтправки Тогда
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(Компонента.ПолучитьСообщениеОбОшибке(),
УровеньЖурналаРегистрации.Ошибка
,
,
ТекстОшибки);
КонецЕсли;
КонецЦикла;
Компонента.ОстановитьПродюсера();
Компонента = Неопределено;
КонецЕсли;
КонецПроцедуры
Лог:
2024-02-07 15:02:51.818740028 Info: initProducer. brokers-хх.ххх.ххх.ххх:ххххх
2024-02-07 15:02:51.820222781 Info: produceAvro. TopicName-order-exchange-query-dev currentPartition-0 avroFile.size()- 0
2024-02-07 15:02:51.820285859 Info: produce. Success
Всё уходит, ошибок нет, но в кафке не появляется сообщение
Почему еще produceAvro появляется?
Подскажите, такое возможно?
При разработке конфигураций в режиме совместимости с версией 8.3.20 или более ранних, внешние компоненты рекомендуется явно загружать изолировано, если компонента может работать в отдельном процессе.
Платформа 8.3.20.1674, обычные формы.
Создаю слушателя, читаю сообщения - все работает.
Иногда при выполнении
Компонента.ОстановитьКонсьюмера();
Происходит краш 1С. Какие сведения от меня могут быть полезны?
Все хорошо работает если Кафка запущена без зукипера(крафт).
Но когда запуская старую кафку с зукипером, ничего не происходит. Ни ошибки ни сообщений. Топик создается.
Кто-то сталкивался с таким?
В последнее время стала вылетать ошибка на строке:
КафкаСообщение = Компонента.Слушать();
Хотя раньше такой ошибки не было.
Текст ошибки пустой.
Какие могут быть причины возникновения данной ошибки?
При разработке приложенной вами ВК был нарушена технология создания внешних компонент
https://its.1c.ru/db/metod8dev#content:3221:hdoc
раздел - Подготовка внешних компонент для загрузки в конфигурацию
При изменении внешних компонент (новый релиз, исправление ошибок и т.д.) новую версию нужно добавлять к имени файла. Например: AddInNative_1_1.so.
Это важно для того что бы корректно обновлять ВК - новую версию нужно добавлять к имени файла...
Что бы платформа могла корректно "заменить" файл
Не забыть поменять так же MANIFEST.XML - чтоб там были корректные имена файлов.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.