簡體   English   中英

Akka Java程序化重寫配置

[英]akka java programmatic override configuration

我可以找到的幾個主題是針對Scala的,而不是Java的,沒有一個主題涉及遠程參與者。

我有一個基本配置文件(SERVER_CONFIG_FILE):

Include "akka-common"

TheSystem {
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
        deployment { 
          /OtherSupervisor {
            remote = "akka://OtherSystem@127.0.0.1:8553"
          }
        }
      }
    remote {
      transport = "akka.remote.netty.NettyRemoteTransport"
      netty {
        hostname = "127.0.0.1"
        port = 8552
      }
    }
  }
}

我想將其加載到程序中,然后覆蓋多個設置,但無法弄清楚代碼。 就像是:

private final Config serverConfig = ConfigFactory.load(SERVER_CONFIG_FILE).withValue...?

我需要覆蓋“ akka://DroneSystem@127.0.0.1:8553”的值以及主機名。 我認為可以通過“ ComparisonSystem.akka.remote.netty.hostname”解決主機名,但確認會有所幫助。

我真的不知道如何處理第一個值,也不知道用什么Java調用來使第一個值組合在一起。 我可以從我看到的示例中學習,但不能從我找到的Scala中學習,並且路徑中沒有任何包含Actor Name的地址。

提前致謝。

您可以這樣操作,請注意,您將Config實例與替代一起使用,並使其回退到默認配置,而不是相反:

Config overrides = ConfigFactory.parseString("some.setting=a-value");
Config actualConfig = overrides.withFallback(ConfigFactory.load());

或者,如果您不喜歡構建字符串,則可以使用屬性來指定替代:

Properties properties = new Properties();
properties.setProperty("some.setting", "a-value");
Config overrides = ConfigFactory.parseProperties(properties);
Config actualConfig = overrides.withFallback(ConfigFactory.load());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM