5.3 路由Actor——创建路由Actor的两种模式
❑ pool方式
路由器Actor会创建子Actor作为其Routee并对其监督和监控,当某个Routee终止时将其移除出去;
❑ group方式:
将Routee的生产方式放在外部(不必自包含),然后路由器Actor通过路径(path)对这些目标进行消息发送。
5.3.1 Pool方式——应 编码 ——定义作为消息中转处理器的Actor
5.3.1 Pool方式——应编码——定义TaskActor
当给MasterRouterActor发送helloA/helloB/helloC消息后:
5.3.1 Pool方式——配置
router表示路由类型,nr-of-instances表示Routee池的大小。
Routee回复消息的接受者
路由和 forward 一样,在整个消息转发的过程中并不会改变原始sender,所以消息会被回复给最初的sender。当然也可以在回复消息时让父Actor(路由Actor)成为自己的sender,这样可以隐藏自己的相关信息。
5.3.1 Pool方式——父监督
由于父监督原则,路由Actor承担着Routee的监督工作,当没有显式指定监督策略时,路由Actor默认会把失败上溯到上级。当路由Actor重启时,会重新创建Routee(子级Actor),并且在池中维护相同个数(nr-of-instances)的actor;当所有的Routee被终止时,路由Actor也会停止(watch它的生命周期,就可以收到它的Terminated消息)。
5.3.1 Pool方式——自定义监督策略
5.3.2 Group方式——配置
先定义Routee-Actor,然后将的path配置给路由Actor,路由Actor会通过path列表来进行路由。
配置:
routees.paths:Routee的path。