从Akka类型的参与者访问应用程序配置的最佳实践

hi3rlvi2  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(143)

我想为这个非常愚蠢的问题道歉。我已经试着在谷歌和堆栈溢出中寻找答案,但我似乎没有找到我要找的东西。
今天晚上,我尝试使用Java DSL和Akka 2.6.4编写我的第一个Actor。除了框架令人震惊的冗长和继承的大量使用之外,一切都很好:)我可以理解为什么Scala是Akka的首选语言。
尽管如此,我还是想采取下一步行动,开始在Actor中使用Hazelcast。Hazelcast集群作为一个单独的服务运行,我想将该高速缓存的地址传递给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变量?

谢谢大家!

yqhsw0fo

yqhsw0fo1#

首先,将配置提供给ActorSystem的方式存在错误:

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

其次,要访问配置,参与者可以使用以下 simple 语句:

String hazelcastAddress = context.getSystem().settings().config().getString("gateway.hazelcast.address");

相关问题