Фон
У меня есть проект, в котором мы используем akka-streams с Java.
В этом проекте у меня есть поток строк и график, который выполняет с ними некоторые операции.
Цель
На моем графике я хочу транслировать этот поток двум работникам. Один из них заменит все символы 'a'
на 'A'
и отправит данные по мере их получения в режиме реального времени.
Другой получит данные, и каждые 3 строки он объединит эти 3 строки и отобразит их в числа.
Это будет выглядеть следующим образом:
Очевидно, Sink 2
не будет получать информацию так же быстро, как Sink 1
. но это ожидаемое поведение. Интересная часть здесь, это рабочий 2.
Проблема
Делать работника 1 легко, а не сложно. Проблема здесь в том, что работающий 2. Я знаю, что у akka есть буферы, которые могут сохранять до X сообщений, но тогда мне кажется, что я вынужден выбрать одну из существующих стратегий переполнения , которые часто приводят к выбору того, какое сообщение Я хочу отбросить или я хочу сохранить поток в прямом эфире или нет.
Все, что я хочу, это когда мой буфер в worke2 достигает максимального размера буфера, чтобы выполнить операции concat и map для всех сообщений, которые у него есть, а затем отправить их вместе (сбросить буфер после).
Но даже после прочтения документации по скорости потока для akka я не смог найти способ сделать это, по крайней мере, с помощью Java.
Исследования
Я также проверил аналогичный вопрос SO, Избирательное регулирование запросов с использованием потока akka-http Однако прошло более года, и никто не ответил.
Вопросы
Используя график DSL, как мне создать путь из:
Источник -> bcast -> worker2 -> Sink 2
??