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

Отправить сообщение GRPC

Отправляет очередное сообщение в клиентский или двунаправленный поток

Функция ОтправитьСообщениеGRPC(Знач Соединение, Знач IDПотока, Знач Запрос, Знач Сессия = Неопределено, Знач ОжидатьСледующее = Ложь) Экспорт

ПараметрCLI опцияТипОбяз.Назначение
Соединение-ПроизвольныйОбъект соединения GRPC
IDПотока-СтрокаИдентификатор потока
Запрос-Структура Из КлючИЗначениеДанные запроса. См. ПолучитьНастройкиЗапроса
Сессия-Структура Из КлючИЗначениеНастройки сессии. См. ПолучитьНастройкиСессии
ОжидатьСледующее-БулевоФлаг ожидания следующих сообщений после текущего
Возвращаемое значение

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

Предупреждение

NOCLI: данный метод недоступен для использования в CLI версии

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

Авторизация = Новый Структура(Логин, Пароль);

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

Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение);

Если Не Результат["result"] Тогда
ВызватьИсключение Результат["error"];
Иначе
IDПотока = Результат["streamId"];
КонецЕсли;

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

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

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

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

Последнее = Счетчик = 4;

Если Счетчик = 0 Тогда

Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных);
ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); // <---
Иначе
ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее);
КонецЕсли;

Если Не ТекущаяОтправка["result"] Тогда

Ошибка = ТекущаяОтправка["error"];

Если Ошибка <> "Timeout" Тогда
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка);
КонецЕсли;

КонецЕсли;

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

КонецЦикла;
Результат
{
"result": true,
"streamId": "e73cc180-c082-4177-80de-25512257e9fa"
}