是否有任何方法可以动态地更改Source的节流参数,以实现加速机制,例如,每隔一秒钟就要减少/增加节流?
答案 0 :(得分:1)
Akka throttle函数可根据成本计算油门。 我们可以使用它来动态更改节流率。
示例:
private val weight = new AtomicInteger(1)
Source(1 to 1000)
.throttle(1000, 1.second, _ => 1000 / weight.get())
.runWith(Sink.foreach(println))
while (true) {
val newWeight = StdIn.readLine().toInt
weight.set(newWeight)
}
初始节流速率为1 / s。然后我们可以通过改变重量来改变它。 由于costFunction返回整数,我使用了系数1000。 可以增加它以获得更好的粒度。
如果您想根据经过时间来改变节流,则只需随着时间的流逝而改变重量。