使用HOCON和C#分配配置值

时间:2015-06-05 13:29:06

标签: c# .net akka akka.net hocon

我有一个Akka ActorSystem的设置,如下所示:

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

我想要做的是用另一个值代替{0}。我发现这样做的唯一方法是使用Typesafe for Java,但我使用的是C#。

1 个答案:

答案 0 :(得分:0)

与任何其他配置格式一样,HOCON专为静态配置而设计。但是,您可以将多个HOCON配置字符串作为 fallbacks 附加,这意味着如果在顶级配置中找不到搜索到的配置密钥,则读者将使用下一个后备配置来查找正确的密钥 - 值。这是一个递归操作。

如果要动态配置这些值,您有两个选择。

  1. 如果您需要解析该地址一次,即在程序开头,您可以直接在actor系统ActorSystem.Create(name, ConfigurationFactory.ParseString(hoconString))中初始化它。如果必须先初始化actor系统,可以使用actorSystem.Settings.InjectTopLevelFallback(ConfigurationFactory.ParseString(hoconString))更新配置。请记住,只有在应用配置后,这些更改才会适用。此外,一些Akka.NET插件可能会缓存配置设置,并且可能不会对这些更改做出反应。所以要小心谨慎。
  2. 其他方法是在创建actor时明确定义部署地址。这可以通过使用Props类来完成,该类用于定义actor的所有构建模式。示例:actorSystem.ActorOf(Props.Create(() => new MyActor()).WithDeploy(new Deploy(new RemoteScope(Address.Parse(remoteAddress)))))