Akka学习笔记(三):什么是Actor

上一节讲到actor是actor system最基本的单元。这一节详细的讲讲actor.更详细here。actor是一个拥有state,behavior,mailbox,children,supervisor strategy的容器.Akka保证所有actor都只运行在自己的轻量级线程,并一次处理一个消息,这样程序员就不用处理同步、竞态

Actor Reference

为了防止actor对象被直接的访问和操作,所以actors通过ActorRef来间接交流。message可以通过如下方式传递:

  • ! (“tell”) - 发送message并马上返回
  • ? (“ask”) - 发送message并返回Future

详见here

State

actor拥有的一组变量,即actor的state。state是可恢复的,详见Persistence

Behavior

actor处理消息的方法吧~

Mailbox

所有收到的消息,会进入actor的mailbox队列。默认是FIFO。

Children

每一个actor,都是潜在的监控者。actor会自动监控执行子任务的actor.children被放在context中,通过context.actorof(...))或者context.stop(child))操作children.这些操作都是异步的,所以相应非常快。

Supervisor Strategy

actor一旦创建,监控策略是不可修改的。Akka自动帮我们处理错误故障。具体的错误策略详见错误的监督和监控

当Actor终止时

一旦actor意外终止,比如失败了。它会释放所有资源,将未处理的messages发送给system的dead letter mailbox.这些message将由EventStream处理。
为什么不把dead letter全部丢掉呢?dead letter主要用来debug


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐