第95讲:Akka第一个案例动手实战MasterActor代码详解学习笔记
1.MasterActor的作用
2.MasterActor代码实现详解
MasterActor的作用:
1.实例化MapActor/ReduceActor/AggregateActor
2.把MapActor要处理的内容发给MapActor
public class MasterActor extends UntypedActor {
private ActorRef aggregaterActor = getContext().actorOf(
//MasterActor本身也是一个actor,是不能创建actor的,
//所以需要gerContext的方式创建actor。
//这里只是一个aggregateActor的一个引用。
//创建actor实例是由akka系统创建的。
//MasterActor在这里拿到的只是一个句柄引用。所以类型是ActorRef
//getContext()取得的是一个actorContext
new Props(AggregateActor.class), "aggregate");
private ActorRef reduceActor = getContext().actorOf(
new Props((UntypeActorFactory create() {
public UntypedActor create(){
return new ReduceActor(aggregateActor);
}
}),"rduce");
private ActorRef mapActor = get Context().actorOf(
new Props(new UntypedActorFactory(){
public UntypedActor create(){
return new MapActor(reduceActor);
}
}),"map");
@override
public void onReceive(Object message) throws Exception{
if (message instanceof String) {
mapActor.tell(message);
//如果收到的是String,就交给mapActor发消息,tell是发完即忘。
} else if (message instanceof Result) {
aggregateActor.tell(message);
//如果收到的是一个Result,就交给aggregateActor发消息,
} else
unhandled(message);
}
}
MasterActor收到的消息是由应用程序入口发送来的消息(HelloAkka)
以上内容是从王家林老师DT大数据课程第95讲的学习笔记。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859