Akka集群远程netty端口绑定:地址已被使用
Akka cluster remote netty port binding: Address already in use
所以我试图在我的本地机器上(在单独的 JVM 中)启动 Akka 应用程序的 2 个实例。
当实例 #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));
我的application.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:地址已在使用
问题是我必须指定 "akka.remote" 而不是 "remote"。然后一切都成功了
所以我试图在我的本地机器上(在单独的 JVM 中)启动 Akka 应用程序的 2 个实例。
当实例 #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));
我的application.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:地址已在使用
问题是我必须指定 "akka.remote" 而不是 "remote"。然后一切都成功了