看看Akka Streams中throttle的签名,我发现可以采用类型为(Out) ⇒ Int
的成本函数来计算穿过舞台的元素如何影响cost/per
的速度限制发送到下游的元素数量。
是否可以基于内置阶段的流基于外部输入来进行节流?如果不是,仅实施自定义阶段会更容易吗?
我期望的是类似的东西
def throttle(cost: Int, per: FiniteDuration, maximumBurst: Int, costCalculation: ⇒ Int, mode: ThrottleMode): Repr[Out]
这样我们可以做类似的事情:
throttle(75 /** 75% CPU **/, 1.second, 80 /** 80% CPU **/, getSinkCPU, ThrottleMode.Shaping)