2017-06-01 14 views
0

にルータで俳優の小道具を作成するために、どのように我々は はアッカ2.0にアッカ2.5

List<String> routeePaths = actorRefs.stream() 
        .map(e -> e.path().toString()) 
        .collect(toList()); 

Props routerProps = Props.empty().withRouter(new BroadcastRouter(routeePaths)); 

しかしアッカ2.5、BroadcastRouterおよび他のいくつかの古いルーターで

が、それ以上ではありません持っていました。これらのルーティング動作をアクターに追加する適切な方法は何ですか?

答えて

1

アクカ2.5はBroadcastRoutingLogicです。以下の実施例はdocumentationからのものである:

Router router; 
{ 
    List<Routee> routees = new ArrayList<Routee>(); 
    for (int i = 0; i < 5; i++) { 
    ActorRef r = getContext().actorOf(Props.create(Worker.class)); 
    getContext().watch(r); 
    routees.add(new ActorRefRoutee(r)); 
    } 
    router = new Router(new BroadcastRoutingLogic(), routees); 
} 

あなたはまた、BroadcastPool又はBroadcastGroupを使用することができます。

構成で定義

BroadcastPool:コードで定義

akka.actor.deployment { 
    /parent/router13 { 
    router = broadcast-pool 
    nr-of-instances = 5 
    } 
} 

ActorRef router13 = getContext().actorOf(FromConfig.getInstance().props(Props.create(Worker.class)), "router13"); 

BroadcastPool

ActorRef router14 = getContext().actorOf(new BroadcastPool(5).props(Props.create(Worker.class)), "router14"); 

BroadcastGroupは構成で定義:

List<String> paths = Arrays.asList("/user/workers/w1", "/user/workers/w2", "/user/workers/w3"); 
ActorRef router16 = getContext().actorOf(new BroadcastGroup(paths).props(), "router16"); 

akka.actor.deployment { 
    /parent/router15 { 
    router = broadcast-group 
    routees.paths = ["/user/workers/w1", "/user/workers/w2", "/use/workers/w3"] 
    } 
} 

ActorRef router15 = getContext().actorOf(FromConfig.getInstance().props(), "router15"); 

BroadcastGroupコードに定義され

関連する問題