169 похожих чатов

@Why_oleg Еще вопрос. Вот у меня есть де факто два

встречно-направленных Flow, один из них в API сделан как подписка, другой как много раз единичный send. Я сейчас продублировал это как один sendAndForget и один requestStream. Но я только что подумал, что это можно было бы сделать при помощи заворачивания локальной отправки в callbackFlow и использования requestChannel. Будет ли так лучше? Как я понял как минимум будет менье установлений соединения

21 ответов

7 просмотров

it depends сложно сказать, что удобнее зависит от того, насколько нужно знать, связаны ли это send или нет если важно знать, что это поток значений или нужен backbressure - то лучше requestChannel на счёт: > Как я понял как минимум будет менье установлений соединения соединение же будет всегда одно, просто будут слегка разные фреймы, по сути разницы нет

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
it depends сложно сказать, что удобнее зависит от ...

Точно не нужно. В смысле порядок. Он на уровне протокола вообще не регламентируется

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
it depends сложно сказать, что удобнее зависит от ...

Ну если я много раз fireAndForget делаю, то там вроде как должны быть какие-то накладные расходы

Alexander Nozik
Ну если я много раз fireAndForget делаю, то там вр...

нет по сути 3 fireAndForget = 3 FAF frames requestChannel with 3 elements = 1 RC frame + 2 Payload frames единственный возможный оверхед это backpressure (RequestN) + с fireAndForget будет слегка проще наверно, если надо слать из разных мест кода а связаны ли эти send и результ requestStream?

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
нет по сути 3 fireAndForget = 3 FAF frames request...

Нет, не связаны. Канал выгляди лучше. Единственное, я не вижу, можно ли там параметры канала первым фреймом как-то передать.

Alexander Nozik
Нет, не связаны. Канал выгляди лучше. Единственное...

параметры? просто в payload(data/metadata), если я понимаю, что Вам нужно

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
параметры? просто в payload(data/metadata), если я...

Ну в requestStream. есть первый фрейм, которым можно сообщить параметры и сингнатура Payload->Flow<Payload>. У requestChannel сигнатура Flow<Payload>->Flow<Payload>. Можно ли передать отдельный первый фрейм для конфигурации?

Alexander Nozik
Ну в requestStream. есть первый фрейм, которым мож...

почему бы не послать его просто внутри flow? условно request: flow { emit(configurationPayload); .... other logic }

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
почему бы не послать его просто внутри flow? услов...

Ну можно, просто логика усложняется. Там тогда надо на той стороне тоже первый элемент отщеплять. Хорошо, я подумаю.

Alexander Nozik
Ну можно, просто логика усложняется. Там тогда над...

>Там тогда надо на той стороне тоже первый элемент отщеплять я сейчас тоже об этом думаю, как это сделать лучше, так как во flow не так просто отделить первый элемент, если flow single collectable есть 2 решения: 1. продьюсить в канал, взять первый элемент и сконвертировать обратно во flow этот канал - возможно, но не приятно 2. поменять сигнатуру requestChannel still WIP

Alexander Nozik
А что с родым API?

родым? в плане клиента?

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
родым? в плане клиента?

В плане жава/с++/whatever. Там есть отдельный пакет на конфигурацию каналов?

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
как где вроде

Понятно, тогда вероятно лучше оставить на усмотрение пользователя. Потому что я вижу по крайней мере два варианта: передавать служебную информацию в мете или вклинивать специальные конфигурационные пакеты, но оба варианта усложняют

Oleg Yukhnevich
как где вроде

в java был отдельный тип для сервера с requestChannel(payload, flux) но потом его вроде выпилили, типа юзать операторы на flux

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
в java был отдельный тип для сервера с requestChan...

Просто если пакеты равноправны, не понятно, что будет при реконнекте

Alexander Nozik
Понятно, тогда вероятно лучше оставить на усмотрен...

вообще, если смотреть в спеку, то для первого пакета можно устанавливать определённые metadata которые не нужны в остальных (типа routing)

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
что Вы подразумеваете под reconnect?

А можно меня не надо с большой буквы ( меня и на ты можно, я всем выкаю по привычке)? Ну вот если по каким-то причинам соединение дропнуто и идет переподключение. Как узнать что первый пакет именно первый?

Alexander Nozik
А можно меня не надо с большой буквы ( меня и на т...

можно и на ты, ок в данный момент, если соединение дропнет - то будет просто ошибка и в общем то всё, request failed, connection failed - надо создавать новое в 0.11.0 есть reconnectable - то там по сути тоже самое, но не будет connection failed - создастся новое подключение и новые запросы будут работать в спеке же есть resumability - которая сейчас перерабатывается и поэтому мы решили пока дождаться её релиза и тогда делать PS - resumability - пока вообще только java поддерживает на данный момент по старой спеке

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Карта сайта