【问题标题】:Akka cluster remote netty port binding: Address already in useAkka 集群远程 netty 端口绑定:地址已在使用中
【发布时间】:2015-12-15 22:17:00
【问题描述】:

所以我试图在我的本地机器上启动 2 个 Akka 应用程序实例(在不同的 JVM 中)。

当实例 #1 启动时 isSeedNode = true(因此端口绑定到 2552)

当实例 #2 启动时 isSeedNode = false(所以端口应该绑定到 9999)

实例#1 启动正常,但是当实例#2 启动时,我得到以下异常,这表明它不遵守我的端口设置...?我做错了什么

boolean isSeedNode = true;

Config remotingConf = ConfigFactory.parseString(
                  "  remote {"+
                  "    enabled-transports = [\"akka.remote.netty.tcp\"]\n"+
                  "    netty.tcp {"+
                  "       hostname = \"192.168.0.208\"\n"+
                  "       port = "+ (isSeedNode ? 2552 : 9999)+"\n"+
                  "       bind-port = "+ (isSeedNode ? 2552 : 9999)+"\n"+
                  "     }"+
                  " }");

Config combined = remotingConf.withFallback(appConfConfig);

system = ActorSystem.create(name,ConfigFactory.load(combined));

我的应用程序.conf

akka {

actor {
  provider = "akka.cluster.ClusterActorRefProvider"
    debug {
    autoreceive = on
    lifecycle = on
    unhandled = on
    }
  }
}

从实例 #2 抛出的异常(当实例 #1 已经运行时)

原因:org.jboss.netty.channel.ChannelException:绑定失败:/192.168.0.208:2552 原因:java.net.BindException:地址已在使用中

【问题讨论】:

  • 配置加载以错误的顺序回退,使用默认配置,然后combined 作为回退,而不是相反。将其设为combined.withFallback(ConfigFactory.load()),它将按您的预期工作。

标签: akka akka-cluster


【解决方案1】:

问题是我必须指定“akka.remote”而不是“remote”。然后一切顺利

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 2015-09-28
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2017-12-07
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多