MasterActor详解

MasterActor作用:
1,由ActorContext实例化MapActor、ReduceActor、AggregateActor
2,接收消息,以及消息转发给各个Actor

/**
 * 管理各个Actor,以及作为消息的入口、进行消息的转发
 * 
 */
public class MasterActor extends UntypedActor {
    //由ActorContext创建Actor
    private ActorRef aggregateActor = getContext().actorOf(new Props(AggregateActor.class),"aggregate");
    private ActorRef reduceActor = getContext().actorOf(new Props(new UntypedActorFactory(){public Actor create() {return new ReduceActor(aggregateActor);}}),"reduce");
    private ActorRef mapActor = getContext().actorOf(new Props(new UntypedActorFactory(){public Actor create() {return new MapActor(reduceActor);}}),"map");

    @Override
    public void onReceive(Object message) throws Exception {
        if(message instanceof String){
            mapActor.tell(message);//fire-and-forget.非阻塞
        }else if(message instanceof Result){
            aggregateActor.tell(message);//让aggregateActor返回最终结果
        }else{
            unhandled(message);
        }
    }
}

你可能感兴趣的:(MasterActor详解)