如何限制akka调度程序上运行的任务数量?

时间:2016-10-31 21:03:55

标签: java playframework akka playframework-2.5

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

2 个答案:

答案 0 :(得分:2)

如果要全局限制并发任务,可以将akka max pool size设置为该数字。有关配置的信息,请访问:https://playframework.com/documentation/2.5.x/JavaAkka

具体来说,有一个设置:

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

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

答案 1 :(得分:0)

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

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