假设我们在只有一个Actor
的调度程序上运行了三个Akka A
,B
,C
和Thread
,并发生以下情况:< / p>
A
收到一条消息并开始处理B
发送一条消息,同时向C
发送一条消息。由于没有Thread
可用,B
和C
都将这些邮件放入邮箱中A
现在已完成处理邮件,邮箱中没有邮件,因此将Thread
释放回池中B
或C
现在都需要此Thread
。是否有任何保证将首先放在线程上?
- Akka如何做出这个决定?它是否在
中的所有Actor
ActorSystem
上循环播放- 此决定是否可配置?
- 在这些情况下,我可以说
Actor
C
的优先顺序是在Actor
B
之前获取主题吗?
答案 0 :(得分:1)
使用Akka的全部原因是不必处理这类事情。您不希望(或需要)以这样的方式确定角色的优先级。内部调度程序逻辑非常复杂,并且非常优化,可以尽快处理任务。应通过其他方式(如路由器或优先邮箱)来确定优先级。
现在回答你的问题:默认调度程序由阻塞队列支持 - 将首先选择首先在其邮箱中收到邮件的角色。