本节主要内容
- 定义Actor
- 创建Actor
1. 定义Actor
通过扩展akka.actor.Actor 特质并实现receive方法来定义Actor,代码示例如下
//通过扩展Actor并实现receive方法来定义Actor
class MyActor extends Actor {
//获取LoggingAdapter,用于日志输出
val log = Logging(context.system, this)
//实现receive方法,定义Actor的行为逻辑,返回的是一个偏函数
def receive = {
case "test" => log.info("received test")
case _ => log.info("received unknown message")
}
}
receive方法被定义在Actor当中,方法标签如下
//Actor中的receive方法定义,
type Receive = PartialFunction[Any, Unit]
def receive: Actor.Receive
下面给出其完整使用代码:
object Example_01 extends App{
import akka.actor.Actor
import akka.event.Logging
import akka.actor.ActorSystem
import akka.actor.Props
class MyActor extends Actor {
val log = Logging(context.system, this)
def receive = {
case "test" => log.info("received test")
case _ => log.info("received unknown message")
}
}
//创建ActorSystem对象
val system = ActorSystem("MyActorSystem")
//返回ActorSystem的LoggingAdpater
val systemLog=system.log
//创建MyActor,指定actor名称为myactor
val myactor = system.actorOf(Props[MyActor], name = "myactor")
systemLog.info("准备向myactor发送消息")
//向myactor发送消息
myactor!"test"
myactor! 123
//关闭ActorSystem,停止程序的运行
system.shutdown()
}
代码运行结果:
[INFO] [04/02/2016 09:29:54.223] [main] [ActorSystem(MyActorSystem)] 准备向myactor发送消息
[INFO] [04/02/2016 09:29:54.224] [MyActorSystem-akka.actor.default-dispatcher-3] [akka://MyActorSystem/user/myactor] received test
[INFO] [04/02/2016 09:29:54.224] [MyActorSystem-akka.actor.default-dispatcher-3] [akka://MyActorSystem/user/myactor] received unknown message
输出“[INFO] [04/02/2016 09:29:54.224] [MyActorSystem-