我正在使用Akka远程处理来实现一些小型搜索应用程序。
我想在一组本地集群机器上部署我的ActorSystem以将它们用作工作者,但是我对于将什么放入我的application.conf以使这种情况发生变得有点困惑。例如,我可以使用:
akka.remote {
transport = "akka.remote.netty.NettyRemoteTransport"
netty {
hostname = "0.0.0.0"
port = 2552
}
}
每个工作人员只是在启动时运行ActorSystem。
这允许我的工作机器在启动时绑定到他们的地址,但是他们拒绝收听消息:
beaker-24: [ERROR] ... dropping message DaemonMsgWatch for non-local recipient akka://SearchService@beaker-24:2552/remote at akka://SearchService@0.0.0.0:2552
到目前为止,我发现的文档只讨论了我的localhost上的部署,这不是很有用:)。我希望有一种方法可以做到这一点,而无需为每个主机生成单独的配置。
更新
使用空字符串作为主机名允许通过普通IP地址联系主机。使用主机名本身的寻址目前不起作用。
答案 0 :(得分:1)
将“0.0.0.0”设置为主机名目前基本上会禁用远程处理,因为这不是要发送到的合法IP。背景:actor引用在它们离开本地系统时,将配置的IP(或主机名)插入它们的地址部分,这正是它们的“指针主页”,供其他系统发回消息。
Scott已经做出了一项努力,使系统能够接收到不同地址here的回复,但尚未包含 - 我们可能会选择不同的解决方案来处理此问题。