Skip to content

Latest commit

 

History

History
51 lines (33 loc) · 4.54 KB

problems.md

File metadata and controls

51 lines (33 loc) · 4.54 KB

Краш при использовании метода Слушать

Один из вариантов - не использовать данный метод, а использовать набор более практичных методов. См. пример.

К примеру, краш в некоторых случаях может возникать из-за некорретных заголовков или ключей сообщений. В этом случае, можно получать само сообщение, не получая проблемные ключи.

Метод Слушать - возвращает перекодированную строку в UTF-8. Это тоже место, которое может потенциально приводить к падению компоненты. Этот кейс решается использованием метода ПолучитьДанныеСообщения(Истина). В этом случае, будут возвращены двоичные данные сообщения, которые можно прочитать через буффер двоичных данных.

Отправка файлов > 1 mb

По умолчанию, в настройках топика указано ограничение на размер сообщения, которое может быть записано в топик. За это отвечает параметр max.message.bytes (разрешенный размер сообщения после сжатия). По умолчанию значение установлено в 1 mb (1048588 byte). Рекомендуется задать настройки для топика (или на уровне брокера) исходя из реального размера сообщений, которые должы храниться в топики, например 50 mb.

Такое же ограничение указано в библиотеке librdkafka в параметре message.max.bytes.

Один из подходов отправить большое сообщение - сжать его средствами компоненты, например

Компонента.УстановитьПараметр("compression.codec", "snappy");

Но библиотека проверяет размер сообщения до сжатия (параметр message.max.bytes), поэтому рекомендуется либо сразу задать более высокое ограничение размера, либо выставлять параметр message.max.bytes исходя из размера сообщения:

upsize = 1048576;               		
РазмерДанных = РазмерДанныхВБайтах(Сообщение);

Если РазмерДанных > 1000000 Тогда
	Компонента.УстановитьПараметр("message.max.bytes", Формат(РазмерДанных + upsize, "ЧДЦ=0; ЧГ=0; ЧФ=Ч"));		
КонецЕсли;

Если необходимо производить отправку больших файлов - xml, pdf, png и.т.д. - рекомендуется заранее эти файлы загружать в хранилище типа S3, а в сообщении обмена передавать путь, где размещен в хранилище файл.

SSL клиент

Компонента.УстановитьПараметр("group.id", "testGroup"); 
Компонента.УстановитьПараметр("enable.ssl.certificate.verification", "false");	// если используется самовыпущенный сертификат
Компонента.УстановитьПараметр("security.protocol", "sasl_ssl");
Компонента.УстановитьПараметр("ssl.ca.location", "ca.cer");
Компонента.УстановитьПараметр("ssl.key.location", "private.pem");
Компонента.УстановитьПараметр("ssl.key.password", "password");
Компонента.УстановитьПараметр("ssl.certificate.location", "/path/to/keystore/client.keystore.p12");
Компонента.УстановитьПараметр("sasl.mechanism", "PLAIN");
Компонента.УстановитьПараметр("sasl.username", "user");
Компонента.УстановитьПараметр("sasl.password", "password");