Akka 从RemoteDeadLetterActorRef中选择ChildName messages

Akka 从RemoteDeadLetterActorRef中选择ChildName messages,akka,akka-remoting,Akka,Akka Remoting,我有两个演员系统,通过akka远程通信 当我查看JVM堆时,我看到(太)多的akka.dispatch.Envelope实例包含SelectChildName来自akka.remote.RemoteActorRefProvider$RemoteDeadLetterActorRef的消息 这些消息的保留堆相当大,会导致内存问题 这些SelectChildName消息的目的是什么?有没有办法避免它们 仅供参考,这似乎与两个参与者系统之间发生的分离错误有关 谢谢, MichailSelectChild

我有两个演员系统,通过akka远程通信

当我查看JVM堆时,我看到(太)多的
akka.dispatch.Envelope
实例包含
SelectChildName
来自
akka.remote.RemoteActorRefProvider$RemoteDeadLetterActorRef
的消息

这些消息的保留堆相当大,会导致内存问题

这些
SelectChildName
消息的目的是什么?有没有办法避免它们

仅供参考,这似乎与两个参与者系统之间发生的分离错误有关

谢谢,
Michail

SelectChildName
消息由Akka远程处理用于解析远程参与者。如果您看到很多,则有可能直接与
ActorSelection
交互,而不是与
ActorRef
交互

例如,每次向
ActorSelection
发送消息时(这些消息取自)

解决了可能的远程参与者问题,这涉及底层Akka基础设施交换
SelectChildName
消息

如果是这种情况,请尝试直接使用
ActorRef
s。您可以使用
resolveOne
方法从
ActorSelection
获取一个

再次引用:

最好是与其他参与者使用 他们的ActorRef,而不是依赖ActorSelection。例外情况是

  • 使用至少一次传递功能发送邮件
  • 启动与远程系统的第一次接触
val selection = context.actorSelection("akka.tcp://actorSystemName@10.0.0.1:2552/user/actorName")
selection ! "Pretty awesome feature"