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

Обработать отправку 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','transport':'grpc','user':'bayselonarrend','auth_type':'basic','password':'***'}" \
--req "{'query':'INSERT INTO events_stream_test FORMAT JSONEachRow','database':'default','data':{'id':'1','timestamp':'01/01/2026 10:00:00','user_id':'100','event_type':'stream_test','payload':'{}'},'format':'JSON'}" \
--data "['{\r\n \"'"id\"'": 2,\r\n \"'"timestamp\"'": \"'"2026-01-01T10:00:00\"'",\r\n \"'"user_id\"'": 101,\r\n \"'"event_type\"'": \"'"stream_test\"'",\r\n \"'"payload\"'": \"'"{}\"'"\r\n}\n','{\r\n \"'"id\"'": 3,\r\n \"'"timestamp\"'": \"'"2026-01-01T10:00:00\"'",\r\n \"'"user_id\"'": 102,\r\n \"'"event_type\"'": \"'"stream_test\"'",\r\n \"'"payload\"'": \"'"{}\"'"\r\n}\n','{\r\n \"'"id\"'": 4,\r\n \"'"timestamp\"'": \"'"2026-01-01T10:00:00\"'",\r\n \"'"user_id\"'": 103,\r\n \"'"event_type\"'": \"'"stream_test\"'",\r\n \"'"payload\"'": \"'"{}\"'"\r\n}\n','{\r\n \"'"id\"'": 5,\r\n \"'"timestamp\"'": \"'"2026-01-01T10:00:00\"'",\r\n \"'"user_id\"'": 104,\r\n \"'"event_type\"'": \"'"stream_test\"'",\r\n \"'"payload\"'": \"'"{}\"'"\r\n}\n']"
Результат
{
"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": {
"BYTES": ""
},
"logs": [],
"output": {
"BYTES": ""
},
"output_columns": [],
"output_format": "",
"progress": {
"read_bytes": 0,
"read_rows": 0,
"total_rows_to_read": 0,
"written_bytes": 235,
"written_rows": 5
},
"query_id": "dd952c88-6b1c-4f4f-9c71-bac1af5704b6",
"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": {
"BYTES": ""
}
},
"result": true
},
"stream_closing": {
"result": true
}
}