Giter VIP home page Giter VIP logo

simple-kafka_adapter's People

Contributors

1cmedicine avatar nonameformr avatar nuclearapk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simple-kafka_adapter's Issues

При вызове "Компонента.ПолучитьСообщениеОбОшибке();" падает с ошибкой.

Подскажите как использовать "Компонента.ПолучитьСообщениеОбОшибке();"?
На данный момент после подключения компоненты и "Компонента.ИнициализироватьКонсьюмера(БрокерСообщений, Топик)" пробую получить сообщения об ошибках. Платформа выдает ошибку:
Метод объекта не обнаружен (ПолучитьСообщениеОбОшибке)
{ОбщийМодуль.ИнтеграцияСKafka.Модуль(105)}:ОписаниеОшибки = Компонента.ПолучитьСообщениеОбОшибке();
{Обработка.РаботаСKafka.Форма.Форма.Форма(174)}:ИнтеграцияСKafka.ПолучитьСообщенияЧерезКоньсюмера(Компонента, ПараметрыКомпоненты, БрокерСообщений, Топик, Таймаут);
{Обработка.РаботаСKafka.Форма.Форма.Форма(40)}:ПолучениеСообщенийИзТопикаНаСервере();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

Планы в релиз 1.0.2 (май)

Логи:

  • Ротация логов
  • Логирование статусов доставки сообщений
  • Логирование ошибок/кейсов вида Application maximum poll interval (300000ms) exceeded by 82ms (adjust max.poll.interval.ms for long-running message processing): leaving group
  • Логирование события перебалансировки группы
  • Добавление в логи информации о прослушиваемом топике

Продюссер:

  • Синхронная отправка и получение статуса доставки в результате выполнения функции отправки

Коньюмер:

  • Получение заголовков сообщения
  • 64 битные оффсеты

Получение partition

Добрый день.
Возможно ли получение 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

Здравствуйте

Мне надо подключиться к брокеру с такими параметрами:
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

Подскажите, пожалуйста, из-за чего возникает следующая проблема при попытке сборки компоненты в ОС 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.
Подскажите из вашего опыта, как лучше поступить. На каждый сервис запускать своего слушателя или лучше запустить одного?

Зависает в новой версии 1.4.0

Что то сломали, теперь при передаче заголовок виснет намертво, если заголовки не задавать все отправляет нормально

КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.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",,ИДТранзакции,Заголовки);

Подключение к confluent

Здравствуйте
Пытаюсь 1с подключить к kafka
Поставил confluent, подключил компоненту Simple-Kafka_Adapter, задал параметр Компонента.УстановитьПараметр("bootstrap.servers", "my_test_server:9092")
В итоге Результат = Компонента.ИнициализироватьКонсьюмера(Брокер, Топик) - Результат = Ложь
КаталогЛогов задан и права на него есть - логи не появились
Подскажите в чём проблема?

Установка настроек клиента

Добрый день.

1.Подскажите, я правильно понимаю что для того чтобы мне указать порт и местонахождение сервера, ssl и прочее я должен использовать

SetParameter УстановитьПараметр Все параметры указаны в https://github.com/confluentinc/librdkafka/blob/master/CONFIGURATION.md
Если да, какой разделитель если несколько параметров.

  1. Создание топиков отдельно делается?, не нашел в компоненте метода

Не удается зарегистрировать библиотеку в ОС Windows

При регситрации библиотеки в системе:

C:\Windows\SysWOW64>regsvr32.exe ./SimpleKafka1C64_1_4_2.dll

Получаю ошибку:

"Модуль SimpleKafka1C64_1_4_2.dll загружен, но точка входа DllRegisterServer не найдена. Проверьте, что «SimpleKafka1C64_1_4_2.dll» является правильным файлом DLL или OCX и повторите попытку»."

Подскажите, пожалуйста, что я делаю не так ?

Публикация сообщений 1.4.2

Подскажите, в чем может быть проблема?

Компонента = СоздатьКомпонентуКафкаКлиент();
	Если Компонента = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СтруктураПодключения = РегламентныхЗаданийОбщий.ПолучитьСтруктуруПодключения("_ЗаписьКафка");
	
	Если ТипЗнч(Данные) <> Тип("Массив") Тогда
		Сообщения = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Данные);
	Иначе
		Сообщения = Данные;
	КонецЕсли;
	
	Если СтруктураПодключения.Параметры.Свойство("КаталогЛогов")
		И ЗначениеЗаполнено(СтруктураПодключения.Параметры.КаталогЛогов) Тогда
		Компонента.КаталогЛогов = СтруктураПодключения.Параметры.КаталогЛогов;
	КонецЕсли;
	
	Брокеры = СтрЗаменить(СтруктураПодключения.Хост, "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 или более ранних, внешние компоненты рекомендуется явно загружать изолировано, если компонента может работать в отдельном процессе.

Источник: https://dl03.1c.ru/content/Platform/8_3_22_2411/1cv8upd_8_3_22_2411.htm#596f707e-01b5-11ec-8371-0050569f678a

Краш 1С при остановке слушателя

Платформа 8.3.20.1674, обычные формы.
Создаю слушателя, читаю сообщения - все работает.
Иногда при выполнении

Компонента.ОстановитьКонсьюмера();

Происходит краш 1С. Какие сведения от меня могут быть полезны?

Ошибка при вызове метода Слушать()

В последнее время стала вылетать ошибка на строке:
КафкаСообщение = Компонента.Слушать();
Хотя раньше такой ошибки не было.
Текст ошибки пустой.
Какие могут быть причины возникновения данной ошибки?

Версии в именах вк

При разработке приложенной вами ВК был нарушена технология создания внешних компонент
https://its.1c.ru/db/metod8dev#content:3221:hdoc
раздел - Подготовка внешних компонент для загрузки в конфигурацию

При изменении внешних компонент (новый релиз, исправление ошибок и т.д.) новую версию нужно добавлять к имени файла. Например: AddInNative_1_1.so.

Это важно для того что бы корректно обновлять ВК - новую версию нужно добавлять к имени файла...
Что бы платформа могла корректно "заменить" файл
Не забыть поменять так же MANIFEST.XML - чтоб там были корректные имена файлов.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.