我正在研究Akka Stream。当我阅读有关Akka中的Balance的示例时。
在此示例中,什么是 In 和 Out 类型?
def balancer[In, Out](worker: Flow[In, Out, Any], workerCount: Int): Flow[In, Out, NotUsed] = {
import GraphDSL.Implicits._
Flow.fromGraph(GraphDSL.create() { implicit b ⇒
val balancer = b.add(Balance[In](workerCount, waitForAllDownstreams = true))
val merge = b.add(Merge[Out](workerCount))
for (_ ← 1 to workerCount) {
// for each worker, add an edge from the balancer to the worker, then wire
// it to the merge element
balancer ~> worker.async ~> merge
}
FlowShape(balancer.in, merge.out)
})
}
val processedJobs: Source[Result, NotUsed] = myJobs.via(balancer(worker, 3))
答案 0 :(得分:1)
流量
一个处理阶段,只有一个输入和输出, 通过转换数据元素连接其上下游 流过它。
通常来说,In
和Out
是type parameters。具体来说,它们用于传达输入类型(这是您放入流中的类型)和输出类型(即由流产生的类型)。