繁体   English   中英

Akka不会使用命令行参数覆盖application.conf

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM