我有以下内容:
val future = myActor ? Message
在我的演员中,我的接收消息有如下内容:
sender ! Response
如果我执行以下操作而忽略了响应,是否会有负面影响?
myActor ! Message
也许我只是在文档中遗漏了它。就像是一个返回值并且调用者没有将返回值分配给任何东西的方法一样吗?如果我从另一个演员那里打来电话,会不会出现一些奇怪的线程问题或由此导致的内存泄漏?我的单元测试似乎并没有受到影响,但这是人为的。我希望我只是对问题进行了过度思考,也许我找不到答案,因为这是一个愚蠢的问题,他们的右脑中没人问。

最佳答案

使用询问模式Response被临时轻量级演员( PromiseActorRef )接收。

如果是myActor ! Message,则作用域中应包含隐式ActorRefResponse将发送到此隐式ActorRef。除非您明确阅读此消息,否则不会对其进行垃圾收集。

如果范围内没有隐式ActorRef,则使用Actor.noSender,并将Response转发到系统的deadLetters。

如果您从另一个演员发出 call ,此Response将被传递到另一个演员的消息框中。

关于scala - Akka:当您告诉ActorRef并期望您提出要求时,会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18094145/

10-09 17:22