回复到我最近的问题表明,一个演员处理其消息一次一个.这是真的?我没有看到任何明确说明(在Scala中编程),其中包含以下代码段(第593页)
如果[
react方法]找到可以处理的消息,[it]将调度该消息的处理以便以后执行并抛出异常
(强调我自己).两个相关(和互斥)的问题:
receive?)编辑:做一些测试似乎证明我错了,演员确实是连续的.所以问题#2我需要回答
我来自Java,我将Runnables 提交给一个ExecutorService由线程池支持的.在Java中非常清楚如何设置线程池大小的限制.
我对使用Scala actor感兴趣,但我不清楚如何限制并发性.
让我们假设,我正在创建一个接受"工作"的网络服务.提交作业的POST请求,我希望我的服务将作业排入队列然后立即返回202 Accepted- 即作业是异步处理的.
如果我使用actor来处理队列中的作业,我如何限制处理的同时作业的数量?
我可以想到几种不同的方法来解决这个问题; 我想知道是否有社区最佳实践,或者至少是一些明确建立的方法,这些方法在Scala世界中有些标准.
我想到的一种方法是让一个协调员角色来管理工作队列和工作处理者; 我想它可以使用一个简单的int字段来跟踪当前正在处理的作业数.我确信这种方法会有一些问题,例如确保跟踪何时发生错误以减少数量.这就是为什么我想知道Scala是否已经为此提供了更简单或更封装的方法.
顺便说一句我以前试过问这个问题,但我问得很厉害.
谢谢!