是否有任何方法可以动态地更改源的节流参数,以便实现斜升机制,例如,每经过一秒,节流就被减少/增加?
lhcgjxsq1#
Akka节流功能提供了基于代价的计算节流,可以动态改变节流速率。示例:
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。然后我们可以通过改变权重来改变它。我使用了1000的因子,因为costFunction返回整数。可以增加它以获得更好的粒度。如果您希望根据经过的时间更改限制,则只需随着时间的推移更改权重。
1条答案
按热度按时间lhcgjxsq1#
Akka节流功能提供了基于代价的计算节流,可以动态改变节流速率。
示例:
初始节流速率是1/s。然后我们可以通过改变权重来改变它。我使用了1000的因子,因为costFunction返回整数。可以增加它以获得更好的粒度。
如果您希望根据经过的时间更改限制,则只需随着时间的推移更改权重。