如何“对抗”akka-streams Sink

时间:2015-12-14 18:27:27

标签: scala akka-stream

拥有 akka-streams Sink

val sink: Sink[Foo, Any] = ???

以及BarFoo的函数:

val f: Bar => Foo = ???

我希望地图(与地图相反)sinkf相对应,以获得Sink[Bar, Any]类型的接收器,但是在图书馆找不到这么简单的方法。如何实现我的需求?

2 个答案:

答案 0 :(得分:2)

结果很简单。

创建Flow接受Bar s:

val flow: Flow[Bar, Bar, Unit] = Flow[Bar]

并将f流水线搜索结果映射到原始sink

val sink2: Sink[Bar, Unit] = flow.map(f).to(sink)

答案 1 :(得分:2)

使用akka-streams版本2.4.X,它更简单:

val sink3: Sink[Bar, Future[Done]] = sink.contramap(f)