1

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

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

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

4

1 回答 1

0

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

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

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