把`func(in:Source [A]):Source [B]`变成`Flow [A,B]`

时间:2019-03-21 14:38:14

标签: akka-stream akka-grpc

我正在使用akka-grpc来生成客户端绑定。它们通常具有

的形式

func[A, B](in: Source[A]) : Source[B]

即他们消耗Source[A]并提供Source[B]

现在,我想将func变成Flow[A, B],以将其与akka流一起使用。

1 个答案:

答案 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