我来自 Java,在那里我将Runnable
s 提交给ExecutorService
由线程池支持的线程池。在 Java 中如何设置线程池大小的限制非常清楚。
我对使用 Scala 演员很感兴趣,但我不清楚如何限制并发性。
假设说,我正在创建一个接受“工作”的 Web 服务。作业随POST
请求一起提交,我希望我的服务将作业排入队列然后立即返回202 Accepted
——即作业是异步处理的。
如果我使用演员来处理队列中的作业,我如何限制同时处理的作业数量?
我可以想出几种不同的方法来解决这个问题;我想知道是否有社区最佳实践,或者至少有一些在 Scala 世界中有些标准的明确确立的方法。
我想到的一种方法是让一个协调器参与者来管理作业队列和作业处理参与者;我想它可以使用一个简单的 int 字段来跟踪当前正在处理的作业数量。但是,我确信这种方法会有一些问题,例如确保跟踪错误发生的时间以减少数字。这就是为什么我想知道 Scala 是否已经为此提供了一种更简单或更封装的方法。
顺便说一句,我不久前试图问这个问题,但我问得很糟糕。
谢谢!