如何临时停止Akka actor从邮箱读取邮件

如何临时停止Akka actor从邮箱读取邮件,akka,Akka,我有一个参与者通过异步API(ReactiveMongo)处理消息并存储结果。当计算完成时,参与者要求ReactiveMongo存储计算结果,并且该调用是非阻塞的 在最后一个ReactiveMongo请求功能完成之前,如何停止actor处理下一条消息?此外,邮箱应该能够接收传入邮件。阻止解决方案 简单而错误的回答:您可以通过阻塞actor来实现这一点,只需调用wait(或者您使用的语言中的任何类似方法) 这是错误的,因为不会在参与者内部阻塞 不阻塞解决方案 主/辅模式适用于此问题: 因此,您的工

我有一个参与者通过异步API(ReactiveMongo)处理消息并存储结果。当计算完成时,参与者要求ReactiveMongo存储计算结果,并且该调用是非阻塞的


在最后一个ReactiveMongo请求功能完成之前,如何停止actor处理下一条消息?此外,邮箱应该能够接收传入邮件。

阻止解决方案

简单而错误的回答:您可以通过阻塞actor来实现这一点,只需调用wait(或者您使用的语言中的任何类似方法)

这是错误的,因为不会在参与者内部阻塞

不阻塞解决方案

主/辅模式适用于此问题:


因此,您的工作者参与者将在ReactiveMongo请求功能完成后发送“工作完成”消息。然后,masteractor将向工人发送新的“完成此工作”消息

ReactiveMongo是否提供API来检查请求功能是否完成?是的,insert调用立即返回功能[WriteResult]。基本上,我可以在feature.oncomplete上添加侦听器,当问题解决时,我必须调用一些东西来激活actor-这是一个问题。还有一个问题是如何在插入通话后阻止演员。非常感谢,从主人那个里拉作业的工人比我今天早上设计的要好得多。