从Akka型演员访问应用程序配置的最佳实践

问题描述 投票:0回答:1

我想对这个愚蠢的问题表示歉意。我试图在Google和Stack Overflow中寻找答案,但似乎找不到我想要的东西。

今天晚上我一直在尝试使用Java DSL和Akka 2.6.4编写我的第一个Actor。除了令人震惊的框架冗长和大量使用继承之外,其他所有优点都不错:)我可以理解为什么Scala是Akka的首选语言。

话虽这么说,我想下一步并开始在演员中使用Hazelcast。 Hazelcast群集作为单独的服务运行,我想将ActorSystem的缓存地址传递给ActorSystem,以便Actor可以使用它。

我停下来问自己,在Akka中管理应用程序配置的正确方法是什么?我创建了一个简单的application.conf文件,如下所示:

akka {
  loglevel = "INFO"
}

gateway {
    hazelcast.address = "localhost:5467"
}

并且我将配置传递给ActorSystem,如下所示:

        Config config = ConfigFactory.load();
        ActorSystem<Event> system = ActorSystem.create(Gateway.create(), "gateway", config.getConfig("gateway"));

并且似乎一切正常。现在我的问题是:

  • 这是存储应用程序特定配置的正确位置吗?
  • 如果是,如何访问hazelcast.address变量?

谢谢大家!

akka
1个回答
0
投票

首先,配置被馈送到ActorSystem的方式有错误:

ActorSystem<Event> system = ActorSystem.create(Gateway.create(), "gateway", config);

第二,actor可以使用以下simple语句:

String hazelcastAddress = context.getSystem().settings().config().getString("gateway.hazelcast.address");
© www.soinside.com 2019 - 2024. All rights reserved.