动态更改Akka Streams上的限制级别

tyu7yeag  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(152)

是否有任何方法可以动态地更改源的节流参数,以便实现斜升机制,例如,每经过一秒,节流就被减少/增加?

lhcgjxsq

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返回整数。可以增加它以获得更好的粒度。
如果您希望根据经过的时间更改限制,则只需随着时间的推移更改权重。

相关问题