2013-11-28 5 views
0

간단하게 UntypedActor 가입자가 있습니다. 액터는 2 가지 유형의 메시지 ('SUB' - 가입자에게 발신자 추가, 'UNSUB' - 가입자로부터 발신자 제거)를 처리 할 수 ​​있으며 다른 메시지는 가입자에게 재전송됩니다.두 개의 라우터 구성을 동시에 사용하는 Akka 라우팅

브로드 캐스트, 라운드 로빈이라는 두 가지 전략으로 라우터를 만들고 싶습니다.

final int routeeCount = 2; 

    BroadcastRouter broadcastRouter = new BroadcastRouter(routeeCount); 
    RoundRobinRouter roundRobinRouter = new RoundRobinRouter(routeeCount); 

    ActorRef broadCastRef = actorSystem.actorOf(Props.create(Dispatcher.class) 
      .withRouter(broadcastRouter), "Broadcast"); 
    ActorRef roundRobinRef = actorSystem.actorOf(Props.create(Dispatcher.class) 
      .withRouter(roundRobinRouter), "RoundRobin"); 

각 라우터는 라우터의 개인 그룹을 만들지 만 나에게는 적합하지 않습니다. 내가 사용하는 경우 다음과 같은 때문에 내가 같은 배우를 사용하여 라우터에 원하는 :

  1. 배우 B가 보내는 메시지 'SUB' broadCastRef에;
  2. broadCastRef 방송의 그것의 자신의 두 아이 배우로 메시지 (X1X2) (routeeCount = 2); 지금부터
  3. 는에 나는 배우 B에 메시지를 전달하는 roundRobinRef을 사용합니다.

그래서 두 개의 다른 라우터 액터에서 액터를 재사용하는 방법은 무엇입니까?

답변

1

가입 요청이 포함 된 akka.routing.Broadcast 메시지를 보내면 RoundRobinRouter의 모든 경로로 라우팅되므로 두 개의 다른 라우터가 필요하지 않습니다.

일반적으로 두 개의 다른 라우터를 사용하여 동일한 대상 집합으로 라우팅하려는 경우 라우터를 별도로 만들고 here (약간 아래로 스크롤)과 같이 라우터에 전달해야합니다.

관련 문제