大数据系列修炼-Scala课程100

来源:互联网 发布:网络兼职诈骗怎么报案 编辑:程序博客网 时间:2024/05/21 06:57

大数据系列修炼-Scala课程100


核心内容:
1、使用SBT开发Akka第一个案例源码解析消息、main入口、MasterActor


1、使用SBT开发Akka第一个案例源码解析消息、main入口、MasterActor

1>ActorSystem是整个Akka的监控容器体系。
2>mapActor ! message语法中消息的发送者是main方法所在的Actor,而mapActor是消息的接受者,main方法在运行的时候也是运行
在Actor之上的。
3>Scala语言具有很强的语言表现力。
4>Scala语言中的case 匹配机制功能类似于if条件表达式。


实例程序1:main程序入口

package akka.dt.app.scala.messagesimport akka.actor.{ActorRef, ActorSystem, Props}import akka.dt.app.scala.actors.MasterActorobject HelloAkka{  def main(args: Array[String]): Unit =  {      //在scala语言中,创建ActorSystem实际上有两种方式      val system: ActorSystem =  ActorSystem.apply("HelloAkka")   //ActorSystem实际上是一个静态类      val master: ActorRef =  system.actorOf(Props[MasterActor],"master")  //本行代码后续还要改动      master ! "Scala and Hadoop"   //ActorSystem向masterActor发送消息      master ! "Java and Spark"     //注意:master在这里实际上是消息的接受者      master ! "Hbase and spark"    //!在这里实际上是一个函数      Thread.sleep(2000)      master ! new Result  //获取最终的消息      Thread.sleep(2000)      system.shutdown()  }}

实例程序2:MasterActor程序

package akka.dt.app.scala.actorsimport akka.actor.{Actor, Props}import akka.dt.app.scala.messages.Resultclass MasterActor  extends Actor   //继承的Actor不同,实现的方法也不同{   val aggregateActor = context.actorOf(Props[AggregateActor],"aggregate")   val reduceActor = context.actorOf(Props(new ReduceActor(aggregateActor)),name = "reduce")   //因为我们的MapActor会将结果交给ReduceActor,所以形式参数是ReduceActor。   val mapActor = context.actorOf(Props(new MapActor(reduceActor)),"map")  //模式匹配在一定程度上功能相当于if  override  def receive: Receive =  //在函数当中进行模式匹配对消息进行相应的处理  {    case message:String => mapActor ! message    case message:Result => aggregateActor ! message    case _ =>  //不对消息进行任何的处理  }}

如有问题,欢迎留言指正!

0 0
原创粉丝点击