AKKA路由策略
来源:互联网 发布:设计图软件 编辑:程序博客网 时间:2024/05/22 04:23
一。路由策略
轮询:RoundRobinRoutingLogic:
随机:RandomRoutingLogic:
空闲:SmallestMailboxRoutingLogic:
广播:BroadcastRoutingLogic:
发送给一个router后,会被所有的routee处理
2.PoisonPill Messages(毒丸消息)
对每一个actor包括router接收到毒丸消息后都要停止,毒丸消息被发送给router后并不会发给routees, router等待routee执行当前消息后就结束各个子routee,造成,mailbox中的消息没有执行完,如果要把所有的消息执行完后退出,需要在Broadcast消息中包含PoisonPill,使每一个routee结束。router的所有routees结束后,它自身也会结束,动态路由的特征
import akka.actor.PoisonPill
import akka.routing.Broadcast
router ! Broadcast(PoisonPill)
3.Kill Messages
router收到kill消息后,自己退出,并抛出ActorKilledException错误,routee如果是router的孩子将会被挂起,router退出后是resumed, restarted or terminated取决于监督策略
三。router管理消息
1.akka.routing.GetRoutees
获取router的Routees信息
2.akka.routing.AddRoutee
向router中添加Routee
3.akka.routing.RemoveRoutee
删除Routee
4.akka.routing.AdjustPoolSize
调整pool大小
AddRoutee之后发送GetRoutees确认添加成功
四。pool和group
pool模式下,routee都是router的孩子,router的监督策略可以用supervisorStrategy配置
router接收的actor指令当成router本身的指令,必须重写restart方法,保证在router重启时,不会重新生成routees
val escalator = OneForOneStrategy() {
case e ? testActor ! e; SupervisorStrategy.Escalate
}
val router = system.actorOf(RoundRobinPool(1, supervisorStrategy = escalator).props(
轮询:RoundRobinRoutingLogic:
随机:RandomRoutingLogic:
空闲:SmallestMailboxRoutingLogic:
广播:BroadcastRoutingLogic:
分散聚集:ScatterGatherFirstCompletedRoutingLogic
把消息分散给各个处理者,得到的第一个回复消息返回给发送者,其它的回复消息被忽略)
尾部断续:TailChoppingRoutingLogic
首先随机选取一条路径发送消息,一小段延迟后再随机选取剩下路径中的一条发送消息。。。直到收到第一个返回,并将结果返回,其它的返回被忽略)
一致性哈希:ConsistentHashingRoutingLogic二。特殊消息
1.Broadcast Messages发送给一个router后,会被所有的routee处理
2.PoisonPill Messages(毒丸消息)
对每一个actor包括router接收到毒丸消息后都要停止,毒丸消息被发送给router后并不会发给routees, router等待routee执行当前消息后就结束各个子routee,造成,mailbox中的消息没有执行完,如果要把所有的消息执行完后退出,需要在Broadcast消息中包含PoisonPill,使每一个routee结束。router的所有routees结束后,它自身也会结束,动态路由的特征
import akka.actor.PoisonPill
import akka.routing.Broadcast
router ! Broadcast(PoisonPill)
3.Kill Messages
router收到kill消息后,自己退出,并抛出ActorKilledException错误,routee如果是router的孩子将会被挂起,router退出后是resumed, restarted or terminated取决于监督策略
三。router管理消息
1.akka.routing.GetRoutees
获取router的Routees信息
2.akka.routing.AddRoutee
向router中添加Routee
3.akka.routing.RemoveRoutee
删除Routee
4.akka.routing.AdjustPoolSize
调整pool大小
AddRoutee之后发送GetRoutees确认添加成功
四。pool和group
pool模式下,routee都是router的孩子,router的监督策略可以用supervisorStrategy配置
router接收的actor指令当成router本身的指令,必须重写restart方法,保证在router重启时,不会重新生成routees
val escalator = OneForOneStrategy() {
case e ? testActor ! e; SupervisorStrategy.Escalate
}
val router = system.actorOf(RoundRobinPool(1, supervisorStrategy = escalator).props(
routeeProps = Props[TestActor]))
group中的routee不由router批量创建,每个routee单独创建,包括创建remote routee
阅读全文
0 0
- AKKA路由策略
- AKKA路由策略的简单实现
- akka之分发和路由
- 策略路由
- 策略路由
- 策略路由
- 策略路由
- 策略路由
- 路由策略和策略路由
- 策略路由与路由策略
- 详解策略路由与路由策略
- linux路由表,策略路由,路由查找
- 策略路由配置举例
- 路由策略配置总结
- linux策略路由实例
- 策略路由解析
- 网吧路由策略
- 设置“策略路由”
- 带抽屉的困难版
- jsoup获取页面内容
- 多线程(三)
- HTTP Status400的原因
- Android内存泄漏产生的原因以及解决方案(OOM)
- AKKA路由策略
- goj 1446 判断栈的输出是否合法
- Kafka java api-消费者代码与消费分析、生产者消费者配置文件详解
- 自然语言处理中的Attention Model:是什么及为什么
- Caffe
- 《大话设计模式》设计模式六大原则
- 如何检查你的应用程序的ABI兼容性
- 《java与模式》-15 享元模式
- getMeasuredHeight()跟getHeight()区别