Scala Akka:简单的Akka集群不工作。

Scala Akka:简单的Akka集群不工作。,scala,akka,akka-cluster,Scala,Akka,Akka Cluster,我们正在创建简单的akka集群示例,并遵循《akka在行动中》book。我们正在创建3个种子节点,如以下代码所述: akka { loglevel = INFO stdout-loglevel = INFO event-handlers = ["akka.event.Logging$DefaultLogger"] log-dead-letters = 0 log-dead-letters-during-shutdown = off actor { provid

我们正在创建简单的akka集群示例,并遵循《akka在行动中》book。我们正在创建3个种子节点,如以下代码所述:

akka {

  loglevel = INFO
  stdout-loglevel = INFO
  event-handlers = ["akka.event.Logging$DefaultLogger"]
  log-dead-letters = 0
  log-dead-letters-during-shutdown = off

  actor {
    provider = cluster
  }

  remote {
    enabled-transport = ["akka.remote.netty.tcp"]
    log-remote-lifecycle-events = off
    netty.tcp {
      hostname = "127.0.0.1"
      hostname = ${?HOST}
      port = ${?PORT}
    }
  }

  cluster {
    seed-nodes = [
      "akka.tcp://words@127.0.0.1:2551",
      "akka.tcp://words@127.0.0.1:2552",
      "akka.tcp://words@127.0.0.1:2553"
    ]

    roles = ["seed"]

    role {
      seed.min-nr-of-members = 1
    }
  }
}
参与者系统代码:

object Launcher extends App {

  val seedConfig = ConfigFactory.load("seed")
  val seedSystem = ActorSystem("words", seedConfig)
}
当从一个终端启动actor系统时,种子节点加载,但根据日志,使用端口
2552
,但我的期望值是
2551
。在尝试再次运行actor系统时打开第二个终端后,我遇到以下异常:

[ERROR] [03/10/2017 15:51:45.245] [words-akka.remote.default-remote-dispatcher-13] [NettyTransport(akka://words)] failed to bind to /127.0.0.1:2552, shutting down Netty transport
[error] (run-main-0) org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:2552
org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:2552
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
    at akka.remote.transport.netty.NettyTransport.$anonfun$listen$1(NettyTransport.scala:417)
    at scala.util.Success.$anonfun$map$1(Try.scala:251)
    at scala.util.Success.map(Try.scala:209)

产生此错误的原因是,在第一个终端中使用了我们的端口
2552
,但不确定第二次使用相同端口的原因。我们的假设是,可能没有加载配置。那么,我们如何解决这个问题?

您如何选择端口?从
.env
文件?我的示例@BranislavLazicOk中没有任何
.env
文件。那么您的端口设置如何?@BranislavLazic我只是在上面的application.conf中定义,并在终端上运行,对所有三个端口使用以下命令
sbt-DHOST=127.0.0.1-DPORT=2551
。试试
-Dakka.remote.netty.tcp.port=2551
,然后告诉我发生了什么。