[英]Akka won't override application.conf with command line parameters
我认为,因为akka 2.1.4使用了typesafe配置,它只会覆盖我通过命令行抛出的任何-D参数,就像play框架一样。 事实证明它似乎没有这样的方式。 添加-Dakka.remote.netty.port=2552
在添加到命令-Dakka.remote.netty.port=2552
并没有真正改变任何内容。 我必须启用任何可以使覆盖工作的东西吗?
附加信息:我尝试在执行sbt assembly
后使用sbt assembly
的-D参数和java -cp app.jar -Dakka.remote.netty.port=2552
好吧,我发现了我做错了什么。 当只加载application.conf
的一部分时,覆盖似乎不起作用。 当您通过仅从 application.conf 加载特定部分来配置actor系统时,不能使用-Dakka.remote.netty.port=2553
覆盖-Dakka.remote.netty.port=2553
端口,如下所示:
val system = ActorSystem("myActorSystem",ConfigFactory.load.getConfig("client"))
application.conf文件:
client{
akka {
log-config-on-start = on
loglevel = "INFO"
actor {
provider = "akka.remote.RemoteActorRefProvider"
include "serialization.conf"
}
remote {
transport = "akka.remote.netty.NettyRemoteTransport"
netty {
hostname = "127.0.0.1"
port = 2552
}
log-sent-messages = off
log-received-messages = off
}
}
}
在这种情况下,虽然您将“client”指定为要加载的子部分,但您仍然必须将“client”作为键的前缀,使用命令行参数覆盖它们。
但请注意,当以这种方式加载时,配置文件中的值不会被“client”前置。 因此,通过使用-Dclient.akka.remote.netty.port=2553
您可以像-Dclient.akka.remote.netty.port=2553
有效地覆盖。
我遇到了同样的问题。 我正在使用'java -jar project.jar -Dblah = whatever'来运行没有覆盖conf文件的项目。 但是,“java -jar -Dblah = what project.jar”确实覆盖了conf文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.