Akka合并水槽而无法访问流程

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

我正在使用一个接受单个AKKA接收器并用数据填充它的API:

def fillSink(sink:Sink[String, _])

有没有一种方法,无需深入研究akka的深度,可以使用两个接收器而不是一个接收器来处理输出?

例如

val mySink1:Sink = ...
val mySink2:Sink = ...
//something
fillSink( bothSinks )

如果我可以使用fillSink方法使用的流程,则可以使用flow.alsoTo(mySink1).to(mySink2),但该流程未公开。

目前唯一的解决方法是传递一个处理字符串的Sink,然后将其传递给两个StringBuilder来替换mySink1/mySink2,但感觉这不符合AKKA的观点。如果不花几天时间学习AKKA,就无法确定是否有从接收器中分离输出的方法。

谢谢!

scala akka akka-stream
1个回答
0
投票

combine Sink运算符,使用提供的combine函数将两个或多个Sink合并,可能是您要查找的内容:

Int => Graph[UniformFanOutShape[T, U], NotUsed]]

一个简单的例子:

def combine[T, U](first: Sink[U, _], second: Sink[U, _], rest: Sink[U, _]*)(strategy: Int => Graph[UniformFanOutShape[T, U], NotUsed]): Sink[T, NotUsed]
© www.soinside.com 2019 - 2024. All rights reserved.