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以进行群集?
答案 0 :(得分:0)
你需要使用端口和绑定端口配置Akka,因为在docker中,“本地端口”不同于“外部世界可以到达我”的端口。
要执行此操作,请参阅此文档页面:Peer to Peer vs Client Server