我有一个参与者处理消息并通过异步API (ReactiveMongo)存储其结果。当计算完成时,参与者要求ReactiveMongo存储计算结果,并且该调用是非阻塞的。
如何在最后一次ReactiveMongo请求功能完成之前停止参与者处理下一条消息?此外,邮箱应该能够接收到传入的消息。
发布于 2017-03-01 01:08:00
阻塞解决方案
简单而错误的答案:您可以通过阻塞参与者来完成这一任务,只需调用Await (或您所使用的语言中的任何类似方法)。
这是错误的,因为没有阻止参与者。
不阻塞解决方案
Master模式是解决此问题的一个好方法:http://letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2
因此,您的工作者演员将在ReactiveMongo请求功能完成后发送“已完成的工作”消息。然后,主演员将向工作人员发送新的“完成此工作”消息。
https://stackoverflow.com/questions/42505964
复制相似问题