AKKA学习日记1

创建Actor有三种方式
第一种:使用默认构造函数创建

object Example_AKKA_1{
        import akka.actor.Actor
        import akka.actor.Props
        import akka.event.Logging
        import akka.actor.ActorSystem

        //定义自己的Actor,通过extends Actor并实现receive方法进行定义
        class StringActor extends Actor{
                val log = Logging(context.system,this)
                def receive = {
                        case s:String => log.info("received message:"+s)
                        case _ => log.info("received unknown message")
                }
        }
        def main(args:Array[String]){
                //创建ActorSystem,ActorSystem为创建和查找Actor的入口
                //ActorSystem管理Actor共享配置信息如分发器(dispatchers)、部署(deployments)等
                val system = ActorSystem("StringSystem")

                //使用默认的构造函数创建Actor实例
                val stringActor = system.actorOf(Props[StringActor],name = "StringActor")

                //给stringActor发送字符串消息
                stringActor!"Creating Actors with default constructor"

                //关闭ActorSystem
                //等待五秒再关闭,要不然看不到实验结果
                Thread.sleep(5000)
                system.shutdown()

其中代码块

//使用默认的构造函数创建Actor实例
val stringActor = system.actorOf(Props[StringActor],name = "StringActor")

包含了两个操作:1.首先使用反射方式Props[StringActor]创建了名称为“StringActor”的Actor;2.使用system.actorOf创建该“StringActor”的Actor对应的ActorRef的实例对象“stringActor”,ActorRef是一种不可变的对象且与创建的Actor具有一一对应的关系,AKKA中所有消息的发送都是经由Actor一一对应的ActorRef,而不是经由Actor本身。


AKKA中的消息发送流程示意图

你可能感兴趣的:(AKKA学习日记1)