java - akka java 编程覆盖配置

标签 java configuration akka typesafe-config

我能找到的几个关于此的主题是针对 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());

关于java - akka java 编程覆盖配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35627839/

相关文章:

java - Bytebuddy - 子类最终类

java - 如何使用 main() 中的对象数组访问类私有(private)成员?

c - 不兼容的 C 指针加上结构采用的 seg 错误

tomcat - OpenShift 专业版 : Binary Deployment With Changed Version Of Tomcat Configuration

akka - 如何取消 Akka Actor ?

java - Java中获取具有一定大小子集的集合的幂集

java - Dynamodb 中针对 ConditionalCheckFailedException 的 AWS 类(class)?

hadoop - 如何更改 hadoop conf 目录位置?

Akka 消息传递保证

tcp - akka.remote.RemoteTransportException : No transport is loaded for protocol