Я использую fs2.Stream
, и у меня есть вопрос о параллельной обработке.У меня есть fs2.Stream[F, O]
и Sink
, которые можно представить как O => F[Unit]
.Таким образом, можно использовать
def observeAsync(maxQueued: Int)(sink: Sink[F, O])
(implicit F: Concurrent[F]): Stream[F, O]
Но, как указано в документации
Обратите внимание, что если ваш приемник может быть представлен O => F[Unit]
, evalTap
даст многоболее высокая производительность.
Я мог бы использовать evalTap
, но в его подписи нет implicit F: Concurrent[F]
, поэтому я предполагаю, что невозможно указать maxQueued
привязку для одновременного выполнения.
def evalTap[F2[x] >: F[x]: Functor](f: O => F2[Unit]): Stream[F2, O]
Так что единственный путь для меня - позвонить observeAsync
?Даже если мой Раковина на самом деле O => F[Unit]
?