Перейти к основному содержимому

Обработать отправку GRPC

Инициализирует поток, передает запрос и набор данных в указанном порядке с получением одного сообщения по окончании

Функция ОбработатьОтправкуGRPC(Знач Соединение, Знач Запрос, Знач Данные, Знач Сессия = Неопределено, Знач Таймаут = 10000) Экспорт

ПараметрCLI опцияТипОбяз.Назначение
Соединение--connПроизвольныйСуществующее соединение или параметры соединения
Запрос--reqСтруктура Из КлючИЗначениеДанные запроса. См. ПолучитьНастройкиЗапроса
Данные--dataМассив Из ПроизвольныйМассив строк, коллекций, двоичных данных или путей к файлам
Сессия--sessionСтруктура Из КлючИЗначениеНастройки сессии. См. ПолучитьНастройкиСессии
Таймаут--toutЧислоТаймаут (в мс)
Возвращаемое значение

Соответствие Из КлючИЗначение - Результат обработки

Пример использования для 1С:Предприятие/OneScript
URL = "http://localhost:9101";
Логин = "bayselonarrend";
Пароль = "12we...";

Авторизация = Новый Структура(Логин, Пароль);
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);

ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow";
ФорматДанных = "JSON";
ТекущаяДата = Дата("20260101100000");

Запрос = Неопределено;
МассивДанных = Новый Массив;

Счетчик = 0;
Пока Счетчик < 5 Цикл

Запись = Новый Структура;
Запись.Вставить("id" , Счетчик + 1);
Запись.Вставить("timestamp" , ТекущаяДата);
Запись.Вставить("user_id" , 100 + Счетчик);
Запись.Вставить("event_type", "stream_test");
Запись.Вставить("payload" , "{}");

Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС;

Если Счетчик = 0 Тогда
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных);
Иначе
МассивДанных.Добавить(Запись);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;

Результат = OPI_ClickHouse.ОбработатьОтправкуGRPC(Соединение, Запрос, МассивДанных);
# JSON данные также могут быть переданы как путь к файлу .json

oint clickhouse ОбработатьОтправкуGRPC \
--conn "{'address':'http://127.0.0.1:9101','auth_type':'basic','password':'***','transport':'grpc','user':'bayselonarrend'}" \
--req "{'query':'INSERT INTO events_stream_test FORMAT JSONEachRow','database':'default','data':{'id':'1','timestamp':'1/1/2026 10:00:00 AM','user_id':'100','event_type':'stream_test','payload':{}},'format':'JSON'}" \
--data "[{'id':'2','timestamp':'1/1/2026 10:00:00 AM','user_id':'101','event_type':'stream_test','payload':{}},{'id':'3','timestamp':'1/1/2026 10:00:00 AM','user_id':'102','event_type':'stream_test','payload':{}},{'id':'4','timestamp':'1/1/2026 10:00:00 AM','user_id':'103','event_type':'stream_test','payload':{}},{'id':'5','timestamp':'1/1/2026 10:00:00 AM','user_id':'104','event_type':'stream_test','payload':{}}]"
Результат
{
"result": true,
"request_sending": {
"result": true
},
"data_sending": [
{
"result": true
},
{
"result": true
},
{
"result": true
},
{
"result": true
}
],
"received_message": {
"message": {
"cancelled": false,
"exception": {
"code": 0,
"display_text": "",
"name": "",
"stack_trace": ""
},
"extremes": "<Двоичные данные>",
"logs": [],
"output": "<Двоичные данные>",
"output_columns": [],
"output_format": "",
"progress": {
"read_bytes": 0,
"read_rows": 0,
"total_rows_to_read": 0,
"written_bytes": 235,
"written_rows": 5
},
"query_id": "860c1020-fc1f-426f-ac53-f79be5ce98bf",
"stats": {
"allocated_bytes": 0,
"applied_aggregation": false,
"applied_limit": false,
"blocks": 0,
"rows": 0,
"rows_before_aggregation": 0,
"rows_before_limit": 0
},
"time_zone": "Europe/Moscow",
"totals": "<Двоичные данные>"
},
"result": true
},
"stream_closing": {
"result": true
}
}