akka java 编程覆盖配置
akka java programmatic override configuration
我能找到的关于此的几个主题是针对 Scala 的,而不是 Java,并且 none 涉及远程参与者。
我有一个基本配置文件 (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());
我能找到的关于此的几个主题是针对 Scala 的,而不是 Java,并且 none 涉及远程参与者。
我有一个基本配置文件 (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());