我有一个actor处理消息并通过异步API(ReactiveMongo)存储其结果。计算完成后,IE会要求ReactiveMongo存储计算结果,并且该调用是非阻塞的。
如何停止演员处理下一条消息,直到最后一次ReactiveMongo请求功能完成?邮箱也应该能够接收传入的消息。
答案 0 :(得分:2)
阻止解决方案
简单和错误的答案:您可以通过阻止actor来执行此操作,只需调用Await(或您使用的语言中的任何类似方法)。
这是错误的,因为不要阻止演员。
未阻止解决方案
Master \ Worker模式有助于解决此问题:http://letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2
所以工作者将发送" 工作完成" ReactiveMongo请求功能完成后的消息。然后主演员将发送新的" 做这项工作"给工人的信息。