【问题标题】:AKKA Remoting lookup remote actors fails when hostname is used使用主机名时,AKKA Remoting 查找远程参与者失败
【发布时间】:2012-07-25 02:23:27
【问题描述】:

我一直在使用 AKKA 远程处理功能。除了一个问题外,它一直运行良好。如果我尝试根据主机名查找远程参与者,则查找失败。但是,如果我根据 IP 地址进行操作,它可以正常工作。有什么方法可以使其对主机名和 IP 地址统一工作?

我的 application.conf 如下所示:

akka {
  version = "2.0.2"
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
  }
  remote {
    transport = "akka.remote.netty.NettyRemoteTransport"
    netty {
        ...
      use-passive-connections = off
      hostname = ""
      port = 8000
        ...
    }
    ...
  }
}

从另一台机器:

actorSystem.actorFor("akka://MyActorSystem@10.0.0.1:8000/user/MyActor")  //**Works**
actorSystem.actorFor("akka://MyActorSystem@hostname.abc.com:8000/user/MyActor") //**Fails**

【问题讨论】:

    标签: remoting lookup actor akka


    【解决方案1】:

    我也看到过这种行为。我希望 Akka actor 系统能够从 java.net.InetAddress.getLocalHost.getHostName 获取系统主机名。

    但是,这似乎并不总是有效。从好的方面来说,将主机名添加到 application.conf 文件应该会产生正确的结果,允许通过 context.actorFor("akka://host.domain.com:8000/user/whatever") 查找远程连接。

    即使上面的 InetAddress 调用产生了所需的主机名字符串,例如在 Scala REPL 中很容易检查,Akka 似乎更喜欢绑定到 IP 地址。如果您希望 Akka 在系统启动时自动绑定到别名,您可以考虑在将其传递给 ActorSystem.apply 之前修改您的 Config 对象(设置akka.remote.netty.hostname)。

    当然,另一个可能不太理想的选项是在每个部署的节点上简单地设置值。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 2021-11-14
      • 2012-11-09
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多