Akka 集群 (2.4) 默认使用 2551 以外的任何端口吗?
Does Akka clustering (2.4) use any ports by default other than 2551?
Akka 是否使用端口 2551 以外的端口(默认情况下)进行集群?
我有一个 3 节点 Akka 集群——每个节点 运行 在一个 Docker 中使用 2.4 的 bind-hostname/port。在某些测试代码中,我在 Docker 之外有一个种子 运行ning。我可以直接点对点地向节点成功发送消息,因此基本的 Akka 消息传递适用于 Docker 化节点。
我的种子代码如下所示:
class Seed() extends Actor {
def receive = {
case "report" =>
mediator ! DistributedPubSubMediator.SendToAll("/user/sender", ReportCommand(), false)
case r:ReportCommand => println("Report, please!")
}
}
val seed = system.actorOf(Props(new Seed()),"sender")
val mediator = DistributedPubSub(system).mediator
mediator ! DistributedPubSubMediator.Put(seed)
我的工作节点是这样的:
class SenderActor(senderLike:SenderLike) extends Actor {
val mediator = DistributedPubSub(context.system).mediator
mediator ! Put(self)
def receive = {
case report:ReportCommand => println("REPORT CMD!")
}
}
当我 运行 发送 "report" 消息给 Seed 时,我看到了 Seed 的 "Report, please!" 消息,所以它收到了自己的广播,但是 3 名工人在Dockers 没有注册收到任何东西(接收时没有输出)。不确定出了什么问题,所以我想知道除了 2551 之外是否还有另一个端口我需要在我的 Dockers 中公开以进行集群?
您需要使用端口和绑定端口配置 Akka,因为在 docker 中 "local port" 不同于端口 "the outside world can reach me at"。
要执行此操作,请参阅此文档页面:Peer to Peer vs Client Server
以及此常见问题解答部分 Why are replies not received from a remote actor?
Akka 是否使用端口 2551 以外的端口(默认情况下)进行集群?
我有一个 3 节点 Akka 集群——每个节点 运行 在一个 Docker 中使用 2.4 的 bind-hostname/port。在某些测试代码中,我在 Docker 之外有一个种子 运行ning。我可以直接点对点地向节点成功发送消息,因此基本的 Akka 消息传递适用于 Docker 化节点。
我的种子代码如下所示:
class Seed() extends Actor {
def receive = {
case "report" =>
mediator ! DistributedPubSubMediator.SendToAll("/user/sender", ReportCommand(), false)
case r:ReportCommand => println("Report, please!")
}
}
val seed = system.actorOf(Props(new Seed()),"sender")
val mediator = DistributedPubSub(system).mediator
mediator ! DistributedPubSubMediator.Put(seed)
我的工作节点是这样的:
class SenderActor(senderLike:SenderLike) extends Actor {
val mediator = DistributedPubSub(context.system).mediator
mediator ! Put(self)
def receive = {
case report:ReportCommand => println("REPORT CMD!")
}
}
当我 运行 发送 "report" 消息给 Seed 时,我看到了 Seed 的 "Report, please!" 消息,所以它收到了自己的广播,但是 3 名工人在Dockers 没有注册收到任何东西(接收时没有输出)。不确定出了什么问题,所以我想知道除了 2551 之外是否还有另一个端口我需要在我的 Dockers 中公开以进行集群?
您需要使用端口和绑定端口配置 Akka,因为在 docker 中 "local port" 不同于端口 "the outside world can reach me at"。
要执行此操作,请参阅此文档页面:Peer to Peer vs Client Server
以及此常见问题解答部分 Why are replies not received from a remote actor?