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

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

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

21 ответов

19 просмотров

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 поддерживает на данный момент по старой спеке

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта