Присвоение значений конфигурации с помощью HOCON и C#

У меня есть настройки для Akka ActorSystem, например, так:

akka {  
  actor{
    provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
      deployment {
        /remoteecho {
           remote = ""akka.tcp://Target@{0}""
      }
    }
  }
}

То, что я хочу сделать, замените {0} другим значением. Я нашел единственный способ сделать это с помощью Typesafe для Java, но я использую C#.

1 ответ

Решение

Как и любой другой формат конфигурации, HOCON предназначен для статической конфигурации. Однако вы можете присоединить несколько строк конфигурации HOCON в качестве запасных, это означает, что если искомый ключ конфигурации не будет найден в конфигурации верхнего уровня, читатель будет использовать следующую резервную конфигурацию, чтобы найти правильное значение ключа. Это рекурсивная операция.

Если вы хотите настроить эти значения динамически, у вас есть два варианта.

  1. Если вам нужно разрешить этот адрес один раз, то есть в начале программы, вы можете инициализировать его непосредственно в вашей актерской системе. ActorSystem.Create(name, ConfigurationFactory.ParseString(hoconString)), Если вы должны сначала инициализировать свою систему актера, вы можете использовать actorSystem.Settings.InjectTopLevelFallback(ConfigurationFactory.ParseString(hoconString)) обновить ваш конфиг. Помните, что эти изменения будут применяться только после применения конфигурации. Более того, некоторые плагины Akka.NET могут кэшировать настройки конфигурации и могут не реагировать на эти изменения. Так что будьте осторожны с этим.
  2. Другой способ - явно указать адрес развертывания при создании актера. это можно сделать с помощью Props класс, который используется для определения всей схемы здания для актера. Пример: actorSystem.ActorOf(Props.Create(() => new MyActor()).WithDeploy(new Deploy(new RemoteScope(Address.Parse(remoteAddress))))),
Другие вопросы по тегам