Akka:简单的Akka集群无法正常工作。

时间:2017-03-10 10:31:56

标签: scala akka akka-cluster

我们正在创建简单的akka​​群集示例,并按照Akka In Action本书进行操作。我们正在创建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但不确定为什么第二次使用相同的端口。我们的假设是,可能没有加载配置。那么,我们如何解决这个问题?

0 个答案:

没有答案