ЮБ
Size: a a a
ЮБ
ЮБ
λ
λ
λ
ЮБ
???.evalMap(msg.publish).parEvalMap(maxPublishBufferSize)(identity)
msg.publish
на самом деле ничего не паблишит. Он только добавляет сообщение в буфер на паблишинг. Это внешний F
. Сделующим шагом я дожидаюсь внутреннего F
— он отрабатывает, когда данные из буфера успешно отправлены в кафку. Чтобы не ждать каждого сообщения (то есть не делать буфер размером 1) я делаю parEvalMap(maxPublishBufferSize)(identity)
, где maxPublishBufferSize
— достаточно большое число. В кафка клиенте уже и так есть куча настроек этого буффера, поэтому мне нет смысла (обычно) ещё и на приложении делать какое-то ограничение буфера. Поэтому maxPublishBufferSize
я выбираю заведомо больше, чем может влезть в буфер. И получается, что когда буффер отправляется в кафку, сразу пачка этих внутренних F
внутри parEvalMap
резолвится и идёт дальше по стриму.ЮБ
λ
λ
ЮБ
ЮБ
λ
λ
ЮБ
λ
λ
KS
KS
Похоже у него фейрнес совсем на дне
- таки не новость, авто yield нет, если какие-то файберы заняли трендели, то будут ранлуп гонять до посинения, пока не закончатсяЮБ