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