首页 > 解决方案 > akka.actor.deployment 配置动态 routees.paths

问题描述

akka {
   actor{
      provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
      deployment {
        /user/OrderBookCoordinatorActor/OrderBookActor-* {
          router = round-robin-pool # routing strategy
          routees.paths = ["/user/OrderBookCoordinatorActor"]
          nr-of-instances = 10 # max number of total routees
          cluster {
             enabled = on
             allow-local-routees = on
             use-role = crawler
             max-nr-of-instances-per-node = 1
          }
        }
      }
   }
}

我有一个问题,我需要匹配动态演员。

我的代码应该是

var path = "akka.tcp://OrderBook@127.0.0.1:8082/user/OrderBookCoordinatorActor/OrderBookActor-{ticker}"

var actor = Context.ActorSelection(path);
actor.Tell(removeOrder);

但我想通过部署来实现这一点,而不总是输入整个 TCP。与 ActorSelection 一样

var actor = Context.ActorSelection("/user/OrderBookCoordinatorActor" + ticker);
actor.Tell(removeOrder);

但问题是我的 Ticker 是动态的,并且总是可以改变。如何使用部署配置来做到这一点?

标签: akka.net

解决方案


您正在寻找的是Akka.Cluster.Sharding,它允许将消息路由到不同节点上的参与者,而无需指定有关节点本身的任何详细信息。


推荐阅读