标签:
package akka import akka.actor.Actor import akka.actor.ActorSystem import akka.actor.Props class HelloActor extends Actor { def receive = { case "hello" => println("world") case _ => println("huh?") } }
package akka import akka.actor.ActorSystem import akka.actor.Props object Test{ val system = ActorSystem("HelloSystem") // default Actor constructor val helloActor = system.actorOf(Props[HelloActor], name = "helloactor") def main(args: Array[String]): Unit = { println(helloActor ! "") }
Akka的Actor我们可以比照人类社会,每个Actor可以看成一个人,具有某些工作能力(比如管理其它人员,回答某些问题)。
我们第一个例子,是定义一个HelloActor, 如果有人问他”Hello”,它可以回答”World”,如果问他其它问题,它不能回答,就以”huh?”答复。
从 Scala2.10起,Akka 作为Scala 开发包的一部分发布,因此无需另外添加引用,可以直接在Scala 命令行使用。本例我们定义了一个HelloActor, 它派生于类Actor,每个Actor有自己的消息队列,可以接受消息,然后对消息进行处理,这里通过定义receive方法来实现的,本例 HelloActor只处理“Hello”消息,返回”world”,而对其他消息都以”huh?”回答。
有 了这个HelloActor定义,我们可以把它应用到Akka 的Actor系统中,注意Actor的实例是不能直接使用new 来创建的。而是使用系统的actorOf方法来创建,注意Actor之间有层次关系(和人类社会一样)。下面我们看如何来创建HelloActor的实 例:
Actor 为一对象,这个对象具有内部状态和定义了一些行为,它们之间通信只能通过在接受方的邮箱投放消息的方式进行。从某种意义上讲,Actor是最能体现面向对 象编程的一种形式,但如果我们把Actor看成人来看可能更为直观。我们在为应用建立模型时,可以想象有一组人,然后给他们分配一些任务,并把他们按照职 能定义不同的组织机构并且考虑如何处理系统的异常情况。
注意:一个Actor系统资源消耗比较大,需要分配多个线程,因此对于一个应用来说,创建一个Actor系统就可以了。
标签:
原文地址:http://my.oschina.net/moks/blog/420409