有什么方法可以动态更改源的节流参数以实现加速机制,例如每过一秒节流就会减少/增加?
最佳答案
Akka throttle功能提供基于成本计算 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 的因子。
可以增加它以获得更好的粒度。
如果你想根据时间改变节流,你只需要随着时间的推移改变权重。
关于java - 动态改变 Akka Streams 的节流级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53432418/