所以我试图在我的本地机器上(在单独的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抛出EXCEPTION(当实例#1已经运行时)
引起:org.jboss.netty.channel.ChannelException:无法绑定到:/192.168.0.208:2552 引起:java.net.BindException:地址已在使用中
答案 0 :(得分:0)
问题是,而不是"远程"我必须指定" akka.remote"。然后一切正常