我有一个使用自定义参与者系统的 J2EE 应用程序,我需要外部化一些自定义配置。
有没有办法做到这一点?因为application.conf
总是在类路径上,所以我可以加载一个外部custom.properties
文件并像下面一样使用它
ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
我有一个使用自定义参与者系统的 J2EE 应用程序,我需要外部化一些自定义配置。
有没有办法做到这一点?因为application.conf
总是在类路径上,所以我可以加载一个外部custom.properties
文件并像下面一样使用它
ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
我不完全确定你的限制是什么,但原则上你有几个选择:
您可以在创建 Actor 系统时为其提供硬编码配置,如下所示:
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
,如下所示:
include "application"
akka.remote.netty.hostname = "custom-ip"
akka.remote.netty.port = "custom-port"
如果未定义,您还可以通过系统属性提供自定义端口和 ip 并使用默认值。在这种情况下,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
不存在 if 将被忽略。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"