来自RemoteDeadLetterActorRef的SelectChildName消息
问题描述:
我有两个通过akka远程通信的角色系统。来自RemoteDeadLetterActorRef的SelectChildName消息
当我看看JVM堆时,我看到(太)akka.dispatch.Envelope
的许多实例包含来自akka.remote.RemoteActorRefProvider$RemoteDeadLetterActorRef
的SelectChildName
消息。
这些消息的保留堆非常大,并导致内存问题。
这些SelectChildName
消息的目的是什么?有没有办法避免它们?
仅供参考这似乎与两个参与者系统之间发生的分离错误有关。
感谢, 米凯尔
答
发起第一接触发送消息
SelectChildName
消息由阿卡远程处理解决远程演员。如果您看到其中很多,则可能会直接与ActorSelection
而不是ActorRef
进行互动。
每次发送消息给一个ActorSelection
,例如(这些是从docs截取)
val selection = context.actorSelection("akka.tcp://[email protected]:2552/user/actorName")
selection ! "Pretty awesome feature"
的 - 可能远程 - 演员得到解决,并涉及由底层交换SelectChildName
消息的阿卡基础设施。
如果是这种情况,请尝试直接使用ActorRef
s。您可以使用resolveOne
方法从ActorSelection
中获得一个。
引述docs再次:
对AT-最不一旦交货设施它始终是优选使用 其ActorRef而不是依靠ActorSelection其他行动者进行通信。例外
- 使用与远程系统