akka笔记
简介:
Actor
UntypedActor actor的基类,继承并实现onReceive方法就可以得到一个Actor。
Props 配置类,用Props.create可以创建一个按指定配置生成的Actor。
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中使用。