我正在使用akka-grpc来生成客户端绑定。它们通常具有
的形式 func[A, B](in: Source[A]) : Source[B]
,
即他们消耗Source[A]
并提供Source[B]
。
现在,我想将func
变成Flow[A, B]
,以将其与akka流一起使用。
答案 0 :(得分:0)
解决方案是:
def SourceProcessor[In, Out](f : Source[In, NotUsed] => Source[Out, NotUsed]): Flow[In, Out, NotUsed] =
Flow[In].prefixAndTail(0).flatMapConcat { case (Nil, in) => f(in) }
它使用prefixAndTail
高举底线Source
。