将流程操作预先添加到接收器

问题描述 投票:0回答:1

我有一个Source,我需要转换成另一个。在此过程中,我还想点击流并将其发送到接收器。这对于toTo和wireTap也没问题。

但是,我希望在数据到达接收器之前对数据进行其他转换:

Source ---> map ---> scan ---> map ---> return as Source
                           \
                            \ alsoTo
                             \
                              \ ---> map --> Sink

在文档中,我读到:

可以将流附加到源,从而产生复合源,并且还可以将流添加到接收器以获得新的接收器。

但是,我找不到一个例子来预先设置这样一个流向接收器的流程,例如:在转发到接收器之前执行“映射”操作。

很简单的例子:

val sink = Sink.foreach(println)
val source = Source(List(1, 2, 3, 4, 5))
val transformed_source = source.map(n => n * 10).alsoTo(sink).map(n => n + 1)

// but I want something along the lines of
alsoTo(map(n => "The result is " + n) ~> sink)
akka-stream
1个回答
0
投票

我认为Flow.to就是我想要的。

def to[Mat2](sink: Graph[SinkShape[Out], Mat2]): Sink[In, Mat]

将此流连接到接收器,连接两者的处理步骤。

© www.soinside.com 2019 - 2024. All rights reserved.