如何传递前一阶段Akka溪流中的参数?
我在玩Akka Streams,对通过带参数的函数构造如何传递前一阶段Akka溪流中的参数?,akka,akka-stream,Akka,Akka Stream,我在玩Akka Streams,对通过带参数的函数构造流感到好奇。参数应从前一个流阶段传递 假设我们有以下输入和输出: case类InitElement(v:Int) 特征流结果 case类StageA(v:Int)扩展StreamResult 案例类StageB(v:Int)扩展了StreamResult trait StreamFailure扩展StreamResult{val msg:String} case类stageafilure(msg:String)扩展了StreamFailure
流感到好奇。参数应从前一个流阶段传递
假设我们有以下输入和输出:
case类InitElement(v:Int)
特征流结果
case类StageA(v:Int)扩展StreamResult
案例类StageB(v:Int)扩展了StreamResult
trait StreamFailure扩展StreamResult{val msg:String}
case类stageafilure(msg:String)扩展了StreamFailure
案例类StageBFailure(msg:String)扩展了StreamFailure
它们的流阶段如下所示:
val stageA=Flow[InitElement].map{
初始化=>
如果(初始电压>10)
阶段(初始v)
其他的
StageAFailure(s“${init.v}小于10”)
}
def stageB(输入:StreamResult)(外部服务:Set[Int])=Flow[StreamResult].map{
案例失败:StreamFailure=>failure
案例阶段a(v)=>
if(externalService.contains(v))
第四阶段(五)
其他的
StageB故障(s“$v在外部服务中不存在”)
}
val graph=Source.single(InitElement(12))
.via(stageA)
//如何将前一阶段的输出传递到“stageB”函数?
.via(stageB(u2;)(集合(11,15,20)))
.toMat(沉头)(保持右侧)
我看不到任何方法可以将stageA
的结果传递到构建下一阶段的函数中
如何实现这一点?您对stageB
的定义构建了一个Flow[StreamResult,StreamResult,.
。它不需要将(输入:StreamResult)
作为参数。请注意,在stageB
定义中的任何位置都不使用input
。元素来自流[StreamResult]
,您将映射到该流上
这就足够了:
def stageB(externalService: Set[Int]) = … // As you wrote it
val graph = Source.single(InitElement(12))
.via(stageA)
.via(stageB(Set(11, 15, 20)))
.toMat(Sink.head)(Keep.right)
您对stageB
的定义构建了一个Flow[StreamResult,StreamResult,u]
。它不需要将(输入:StreamResult)
作为参数。请注意,在stageB
定义中的任何位置都不使用input
。元素来自流[StreamResult]
,您将映射到该流上
这就足够了:
def stageB(externalService: Set[Int]) = … // As you wrote it
val graph = Source.single(InitElement(12))
.via(stageA)
.via(stageB(Set(11, 15, 20)))
.toMat(Sink.head)(Keep.right)
我就知道(答案会在最上面)!谢谢我就知道(答案会在最上面)!谢谢