Java中使用akka手记四 用法速查

Actor

  • UntypedActor actor的基类,继承并实现onReceive方法就可以得到一个Actor。
  • Props 配置类,用Props.create可以创建一个按指定配置生成的Actor。
  • Props的推荐实践,创建Actor时,搞一个static的Props.create方法。可以少写不少重复代码。
  • system.actorOf 会创建顶级的actor,将被系统监控。
  • getContext().acrtorOf 会创建子actor。
  • ActorRef 由actorOf产生,可以是一个网络actor。
  • ActorRef.forward与tell、ask的区别,性能最好的是tell,发完就走。ask是发完等Future,要等的话性能是个问题。forward用于从一个actor转发消息给另一个actor,原始的sender信息会被保留,在>做路由、负载均衡、备份时非常有用。ask会拦住reply消息直接给onsuccess等,sender不会再得到reply。
  • Inbox 当actor不能满足需要时,可以使用inbox,比如收多个回复,watch其他actor的生命周期。

spring集成

  • 实现SpringExtProvider在spring context中去寻找actor class,实现akka.actor.Extension和akka.actor.IndirectActorProducer。
  • system.actorOf(SpringExtProvider.get(system).props(“CountingActor”), “counter”);即可取到bean为CountingActor的class。

else

  • PoisonPill 这药,给哪个actor一发就挂。myActor.tell(akka.actor.PoisonPill.getInstance(), sender);
  • TypedActor 是比较好的连接actor系统与非actor内容的东东。
  • mailbox 每个actor的消息存放处,默认为java.util.concurrent.ConcurrentLinkedQueue,akka.dispatch.SingleConsumerOnlyUnboundedMailbox为更高效的一个box,但不能用在BalancingDispatcher时。还可以自已定义mailbox的细节。
  • UntypedProcessor 继承它可得到一个processor。用来做persistence用的。
  • SupervisorStrategy 定义出错处理。
  • routing 定义路由选择机制。cluster中使用。


原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]

捐款订阅54chen
捐赠说明