2012-05-22 4 views
4

나는 akka 2.0 라운드 로빈 라우터가 있습니다. 이제 모든 경로에 메시지를 브로드 캐스트하고 모든 경로에서 응답을 기다려야합니다. 나는 아직 그렇게 할 수있는 방법을 찾지 못했습니다. 먼저 라우터에 전달한 액터 목록이 있지만 이제는 내 application.conf에서로드해야합니다. 방송의 모든 메시지를 기다리는 방법이 있습니까? conf 파일에서 경로 수를 얻을 수 있다면 괜찮을 것입니다.Akka ask Broadcast

+2

내가 당신이라면 ScatterGatherFirstCompletedRouter를보고 ScatterGather를 실행 한 다음 끌어 오기 요청을 보내고 CLA에 서명하십시오 :-) –

+0

Viktor,이 경우 응답 메시지의 의미는 무엇입니까? 있니? 단지 반복할만한 것 [<각 배우가 대답하는 것>]? – questionersam

답변

2

경로 수를 알고 있다면 일반적으로받은 응답 수를 계산합니다. 그러나 특히 메시지가 실제로 전달된다는 보장이 없으므로 액터가 분산되어 실행중인 경우에는 시간 초과를 고려해야 할 수 있습니다.

+0

네 말이 맞지만이 시점에서 나는 정말로 모든 대답이 필요하다. 하나가 실패하면 전체 요청이 실패합니다. –

+0

기본 알고리즘은 http://doc.akka.io/docs/akka/2.0.1/intro/getting-started-first-scala.html의 자습서에 나와 있습니다. Master 클래스는 거의 정확히 이런 방식으로 작동합니다. 누락 된 유일한 비트는 모든 작업이 완료되는 시간 초과입니다. 하지만 당신의 배우가 여러 개의 JVM 및/또는 시스템에 실제로 분산되어있는 경우에만 필요하다고 생각합니다. –

+0

이 자습서에서 마스터 액터에 대해 구현 된 타임 아웃을 얻으려면 스케줄러 (http://doc.akka.io/docs/akka/2.0.1/scala/scheduler.html)를 설정하고 사용자 정의 타임 아웃 메시지를 보낼 수 있습니다 주인공에게. –