Лучшая практика для доступа к конфигурации приложения от актера, набранного Akka - PullRequest
0 голосов
/ 05 апреля 2020

Я хотел бы извиниться за действительно тупой вопрос. Я пытался найти ответ в Google и Stack Overflow, но, похоже, я не нашел того, что искал.

Я провел этот вечер, пытаясь написать своих первых актеров, используя Java DSL и Акка 2.6.4. Помимо шокирующей многословности фреймворка и массового использования наследования, все хорошо :) Я понимаю, почему Scala является языком выбора для Akka.

При этом я хотел взять следующий шаг и начать использовать Hazelcast в актере. Кластер Hazelcast работает как отдельный сервис, и я хочу передать ActorSystem адрес кеша, чтобы актеры могли его использовать.

В этот момент я остановился и спросил себя, как правильно управлять настройка приложения в акке? Я создал простой 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"));

, и все, кажется, работает. Теперь мои вопросы:

  • Это правильное место для хранения конфигурации приложения c?
  • Если так, как я могу получить доступ к переменной hazelcast.address?

Спасибо всем!

1 Ответ

0 голосов
/ 05 апреля 2020

Во-первых, произошла ошибка при подаче конфигурации на ActorSystem:

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

Во-вторых, для доступа к конфигурации субъект может использовать следующее simple заявление:

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