
Akka实践
文章平均质量分 79
加权不平权
IT课堂里的小学生
展开
-
Actor Persistence&Snapshot 快照与持久化
快照与持久化算是Actor 进行数据保存的一种设计可以将消息数据保存(本地或内存),而进行actor恢复时,则只需要重放消息,则可以将actor恢复至停止前的状态。同时可以对数据进行快照存储,快照的好处,则是恢复时避免每次都是从第一消息进行重放。示例:package com.zte.sunquan.demo.actor.persist;import akka.act原创 2017-10-16 11:01:03 · 509 阅读 · 0 评论 -
Akka之actor name [c1] is not unique!
在使用ODL的过程中,突然出现如题所述的故障,字面上看在actor的池中存在了两个同名的actor。在功能开发设计时,当然是不允许actor名称相同,基本可以排除开发人员识定义了重名的actor。下面编写可复现的测试说明该问题。测试代码,父Actorpackage com.zte.sunquan.deom.ofo;import akka.actor.AbstractActor;im...原创 2018-03-29 17:05:55 · 1838 阅读 · 0 评论 -
OneForOneStrategy监控策略&Actor测试
Akka中每个Actor都是在其他的Actor中创建,换句话说:每个Actor都存在于它父亲的context中。每个父Actor负责监管它下边的所有子Actor。当一个Actor产生异常行为时,它的父Actor就负责对该如何处置这个Actor做出决策和处理逻辑。决策策略包括以下几种:Restart:重新启动出现异常的ActorStop:停掉出现异常的ActorResume:忽略异常,...原创 2018-01-05 16:15:26 · 1533 阅读 · 1 评论 -
akka的ask消息发送
在akka中除了使用tell来进行发送消息,还可以使用ask。tell属于发了就完,什么都不管的类型。ask发送完,还要在一定时间等待被发送方返回结果,如果指定超时时间无返回结果,则抛出异常。(异步)接收方必须通过getSender().tell(reply, getSelf()) 发送回应来为返回的 Future 填充数据。ask 操作包括创建一个内部临时actor来处理原创 2017-12-16 11:23:04 · 4733 阅读 · 0 评论 -
Actor的熔断(CircuitBreaker)机制
A股曾经搞过熔断,而Actor也有熔断机制。其原理如下:三个状态: 关闭 打开 半打开Akka的熔断对actor定义了三种状态,分别是open,half-open,closeOpen:表示熔断打开,所有后续的请求都直接返回,不进行逻辑处理Half-open:表示熔断半开,如果第一次请求,能正确执行,即不超时无异常,则熔断机制关闭,切换状态到CLOSED,否则切换加Open,等待重置时间。Close...原创 2017-10-16 15:54:59 · 1213 阅读 · 3 评论 -
Scala与Java8的Future转化
在学习Akka时,自然会接触到scala语言,对于用惯了java的程序员来说,使用JAVA的Future的特性更为熟练。所以有了本篇文章。本节主要讨论feature在这两种语言中的转换与使用。 <dependency> <groupId>org.scala-lang.modules</groupId> ...原创 2017-12-24 19:49:46 · 1299 阅读 · 0 评论 -
Akka之配置文件加载
akka启动时,默认加载application.conf配置文件,所以有关辅助的配置可以在该文件中定义。此外,akka也提供可以在代码中以硬编码的方式,加入或覆盖配置。如: // Override the configuration of the port Config config = ConfigFactory.parseString( "ak原创 2017-12-19 16:29:42 · 3699 阅读 · 0 评论 -
Actor示例简单介绍
Actor模式是一种并发模型,区别于共享内存模型,其不共享任何东西。多线程之间是通过消息传递的方式进行协作(传递数据),而这些线程就是Actor。共享内存更适合单机多核的并发编程,随着多核并发(分布式)系统普及,共享内存模型已然不再适用于并发编程。下面通过示例介绍下,使用Actor并发模型解决下面的问题。示例:对整形数组进行排序,获取其中的最大值与最小值。package com原创 2017-06-17 11:19:20 · 976 阅读 · 0 评论 -
Actor receive timeout
Akka的actor中,可以设置receiveTimeout,一度为该设置项比较疑惑。receive time out是指最多允许多长时间,该actor无消息接口,即空闲,否则会超时的消息通知。该Actor一个典型的应用即心跳Actor,在规则时间内无心跳信息,则超时,进入超时处理。示例:package com.zte.sunquan.demo.actor.recvtimeout;原创 2017-10-16 09:53:22 · 1075 阅读 · 0 评论 -
Actor ask请求
向一个actor发送消息,除使用tell,还可以使用ask进行请求.tell异步发送消息后,立即返回,效率最高ask异步发送消息后,返回featureforward为消息转发,其作用主要是能保持最开发发送的actor,如A发送消息M至B,B中forward至C,则C中获取消息的sender仍然为A下面介绍下ask的使用:辅助类消息package com.zte.原创 2017-10-16 10:11:50 · 1230 阅读 · 1 评论 -
Actor测试用例一般写法
对于Actor的测试,可以使用TestActorRef和TestProb:TestActorRef:用于获取Actor对象,能够获取actor中内部属性,使用方法underlyingActor(有泛型)TestProb:用于判断actor接收消息后回应消息的判断,可以验证actor功能是否正常,使用方法expectMsg具体使用示例参考如下:package com.zte.s...原创 2019-09-19 17:57:20 · 515 阅读 · 0 评论