Scala 如何计算Akka Streams中GraphStage内的聚合?
我在Akka stream中有一个操作符/组件,其目标是在5秒内计算一个值。因此,我使用Scala 如何计算Akka Streams中GraphStage内的聚合?,scala,akka,akka-stream,Scala,Akka,Akka Stream,我在Akka stream中有一个操作符/组件,其目标是在5秒内计算一个值。因此,我使用TimerGraphStageLogic创建了操作符/组件,您可以在下面的代码中看到。为了测试它,我创建了两个源,一个是递增的,另一个是递减的,然后我使用merge形状合并它们,然后使用windowFlowShape,最后以Sink形状发射它们。因为我在另一个PoC中对其进行了测试,所以我确保了它正常工作。在本例中,我正在调整将泛型类型T替换为Int,因为我必须指定我的窗口将聚合什么 但是,我的问题是无法在w
TimerGraphStageLogic
创建了操作符/组件,您可以在下面的代码中看到。为了测试它,我创建了两个源,一个是递增的,另一个是递减的,然后我使用merge
形状合并它们,然后使用windowFlowShape
,最后以Sink
形状发射它们。因为我在另一个PoC中对其进行了测试,所以我确保了它正常工作。在本例中,我正在调整将泛型类型T
替换为Int
,因为我必须指定我的窗口将聚合什么
但是,我的问题是无法在window stage操作符中聚合Int
值。当我试图执行sum=sum+elem
时,我在运行时收到一个错误,上面说:
overloaded method value + with alternatives:
(x: scala.Int)scala.Int <and>
(x: Char)scala.Int <and>
(x: Short)scala.Int <and>
(x: Byte)scala.Int
cannot be applied to (Int(in class WindowProcessingTimerFlow))
sum = sum + elem
因为您正在创建一个名为
Int
的类型参数,该参数隐藏类型Int
定义,其中定义:
class WindowProcessingTimerFlow[Int](silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {
尝试从中删除泛型:
class WindowProcessingTimerFlow(silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {
因为您正在创建一个名为
Int
的类型参数,该参数隐藏类型Int
定义,其中定义:
class WindowProcessingTimerFlow[Int](silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {
尝试从中删除泛型:
class WindowProcessingTimerFlow(silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {