除了2551之外,Akka群集(2.4)是否默认使用任何端口?

时间:2015-11-19 22:17:25

标签: scala akka

Akka是否使用端口2551以外的端口(默认情况下)进行群集?

我有一个3节点的Akka集群 - 每个节点使用2.4的bind-hostname / port在Docker中运行。我在一些测试代码中有一个在Docker外面运行的种子。我可以直接成功地将节点点对点地发送到节点,因此基本的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!")
    }
}

当我运行这个并发送"报告"给种子的消息,我看到种子"报告,请!"消息,所以它收到了自己的广播,但Dockers中的3名工作人员没有收到任何东西(接收时没有输出)。不知道出了什么问题,所以我想知道除了2551之外是否还有另一个端口我需要在我的Dockers中进行EXPOSE以进行群集?

1 个答案:

答案 0 :(得分:0)

你需要使用端口和绑定端口配置Akka,因为在docker中,“本地端口”不同于“外部世界可以到达我”的端口。

要执行此操作,请参阅此文档页面:Peer to Peer vs Client Server

此常见问题解答部分Why are replies not received from a remote actor?