如何在 akka scheduler 上限制 运行 任务的数量?

How to limit the number of running tasks on akka scheduler?

我在 Java Play Framework 中有一个应用程序,用户可以同时 运行 执行多项任务,这可能需要很长时间才能完成。我认为我可以使用 actorSystem.scheduler() 来做到这一点。但是,我进行了一些测试,发现用户最多可以同时 运行 执行 4 个任务,否则这些任务占用的资源将超过我的服务器所能提供的资源。那么有没有办法限制Akka调度器上同时运行ning的任务数呢?

使用池(可以是 blockingLinkQueue)来存储调度程序对象。

当用户来时,尝试从池中获取一个实例,否则等待。这样做 2 控制您将在您的系统中使用的最大调度程序。

如果你想全局限制并发任务,你可以将 akka 最大池大小设置为该数字。有关配置的信息可在此处获得:https://playframework.com/documentation/2.5.x/JavaAkka

具体有一个设置:

akka.actor.default-dispatcher.fork-join-executor.pool-size-max = 64

您可以将其设置为您希望并发 运行 的最大任务数。这是将要使用的线程数。