我有一个使用自定义actor系统的J2EE应用程序,我需要外化一些自定义配置。
有办法做到这一点吗?由于application.conf
总是在类路径上,所以无论如何我可以加载外部custom.properties
文件并使用它如下所示
ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
答案 0 :(得分:3)
我不完全确定你的约束是什么,但原则上你有几个选择:
您可以在创建演员系统时为演员系统提供硬编码配置,如下所示:
Map configMap = new HashMap();
configMap.put("akka.remote.netty.hostname", custom.ip);
configMap.put("akka.remote.netty.port", custom.port);
Config config = ConfigFactory.parseMap(configMap).withFallback(ConfigFactory.load());
ActorSystem system = ActorSystem.create("ActorSystem", config);
您可以通过代码application.conf
或通过设置系统属性ConfigFactory.load("custom.conf")
并在-Dconfig.resource=custom.conf
中加载application.conf
来加载自定义配置文件而不是custom.conf
{1}},像这样:
include "application"
akka.remote.netty.hostname = "custom-ip"
akka.remote.netty.port = "custom-port"
您还可以提供自定义端口和ip through系统属性,并使用默认值(如果未定义)。在这种情况下,application.conf
将如下所示:
akka.remote.netty.hostname = "default-ip"
akka.remote.netty.port = "default-port"
akka.remote.netty.hostname = "${?custom.ip}"
akka.remote.netty.port = "${?custom.port}"
或者您可以在custom.properties
文件中加入application.conf
。如果custom.properties
不存在则会被忽略。 application.conf
:
akka.remote.netty.hostname = "default-ip"
akka.remote.netty.port = "default-port"
include "custom"
custom.properties
:
akka.remote.netty.hostname = "custom-ip"
akka.remote.netty.port = "custom-port"