2016-11-04 9 views
0

使用して設定ファイルにクラスタのルーティングを設定する場合:設定アッカClusterRoutingプログラムで

akka.actor.deployment { 
    /jobDispatcher/singleton/workerRouter { 
     router = round-robin-pool 
     nr-of-instances = 5 
     cluster { 
      enabled = on 
      max-number-of-instances-per-node = 1 
      allow-local-routees = on 
     } 
    } 
} 

を私が使用してルーティングされた労働者を検索することができます

ActorRef actor = context().actorOf(// 
    FromConfig.getInstance().props(// 
    Props.create(MyRoutedActor.class)), // 
    "workerRouter"); 

私が欲しいので、私は、プログラムプールを設定好みます私のユーザーから詳細を隠すために。

しかし使用:。

ActorRef actor = context().actorOf(new ClusterRouterPool(new RoundRobinPool(5), // 
    new ClusterRouterPoolSettings(100, 1, true, "")) // 
    .props(Props.create(MyRoutedActor.class)), 
    "workerRouter"); 

は、ルートクラスター内のRouteesへの呼び出し(のみローカルIが正しくルーティングを設定するにはどうすればよい

ない

答えて

1

をClusterRouterPool

を使用してみてください?

Akka docは[http://doc.akka.io/docs/akka/2.4/scala/cluster-usage.html]

ルート - 子アクターとしてルートを作成し、それらをリモートノードにデプロイするルーター。各ルータには独自のルートインスタンスがあります。たとえば、10ノードのクラスタ内の3つのノードでルータを起動する場合、ルータがノードごとに1つのインスタンスを使用するように設定されている場合、合計30のルートがあります。異なるルーターによって作成されたルートは、ルーター間で共有されません。このタイプのルータのユースケースの1つの例は、ジョブを調整し、実際の作業をクラスタ内の他のノード上で実行されているルートに委譲する単一のマスタです。

http://doc.akka.io/docs/akka/2.4/java/cluster-usage.html#Router_with_Pool_of_Remote_Deployed_Routees

akka.actor.deployment { 
    /statsService/singleton/workerRouter { 
     router = consistent-hashing-pool 
      cluster { 
      enabled = on 
      max-nr-of-instances-per-node = 3 
      allow-local-routees = on 
     use-role = compute 
     } 
    } 
} 

(また、アッカのドキュメントからの)プログラムで行うコード:

int totalInstances = 100; 
int maxInstancesPerNode = 3; 
boolean allowLocalRoutees = false; 
String useRole = "compute"; 
ActorRef workerRouter = getContext().actorOf(
    new ClusterRouterPool(new ConsistentHashingPool(0), 
     new ClusterRouterPoolSettings(totalInstances, maxInstancesPerNode, 
     allowLocalRoutees, useRole)).props(Props 
    .create(StatsWorker.class)), "workerRouter3"); 

私はスカラ座でのアッカ・クラスターを持っており、これは私のコードです:

val workerRouter = context.actorOf(
    ClusterRouterGroup(AdaptiveLoadBalancingGroup(MixMetricsSelector), ClusterRouterGroupSettings(//RoundRobinGroup(Nil) 
    totalInstances = 1000, routeesPaths = List("/user/worker"), 
    allowLocalRoutees = true, useRole = Some("workerRole"))).props(), 
name = "pool") 
+0

私のinitiaで何が間違っていたか正確には分かりませんl溶液である。しかし、あなたはうまくいくようですが、 – herzrasen

関連する問題