摘要: 使用过akka的应该都知道,默认情况下,消息是按照最多一次发送的,也就是tell函数会尽量把消息发送出去,如果发送失败,不会重发。但有些业务场景,消息的发送需要满足最少一次,也就是至少要成功发送一次。akka在Persistence的基础之上提供了at-least-once传递的语法。 简单来说ak 阅读全文
posted @ 2018-08-09 11:21 gabry.wu 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 在学习akka过程中,我们了解了它的监督机制,会发现actor非常可靠,可以自动的恢复。但akka框架只会简单的创建新的actor,然后调用对应的生命周期函数,如果actor有状态需要回复,我们需要hook对应的生命周期函数,自己恢复状态。但此时恢复的只是初始状态,如果actor在接收消息过程中,状 阅读全文
posted @ 2018-08-08 17:59 gabry.wu 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 生命周期监控,也就是死亡监控,是akka编程中常用的机制。比如我们有了某个actor的ActorRef之后,希望在该actor死亡之后收到响应的消息,此时我们就可以使用watch函数达到这一目的。 我们从官网的一个例子入手,其实DeathWatch用起来还是非常方便的,就是调用context.wat 阅读全文
posted @ 2018-08-08 11:26 gabry.wu 阅读(554) 评论(0) 推荐(0) 编辑
摘要: akka中的EventBus其实是不常用,也最容易被忽略的一个组件。 但如果你深入Cluster的实现就会发现,这个东西其实还挺有用的,而且它是ActorSystem系统中所有事件消息的一个横切面,通过它你可以订阅特定类型的消息,然后做出相应的动作。那读者可能会问了,这个订阅消息也很简单的啊,我自己 阅读全文
posted @ 2018-08-07 10:56 gabry.wu 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: akka还有一个不常使用、但我觉得比较方便的一个模块,那就是FSM(有限状态机)。我们知道了akka中Actor模型的具体实现之后,就会发现,Akka的actor可以非常方便的实现FSM。其实在akka中实现FSM还是非常简单的,或者说我们在akka中有意无意的都在使用FSM。 在介绍分析akka中 阅读全文
posted @ 2018-08-06 16:28 gabry.wu 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 如果有小伙伴在看官方文档的时候,发现有些自相矛盾的地方,不要怀疑,可能是官方文档写错了或写的不清楚,毕竟它只能是把大部分情况描述清楚。开源代码一直在更新,官方文档有没有更新就不知道了,特别是那些官方不推荐的组件,文档描述可能已经过时了。所以也不能迷信官方文档,看我的源码讲解系列文章才是王道,一切以源 阅读全文
posted @ 2018-08-06 10:33 gabry.wu 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2018-08-03 17:55 gabry.wu 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 前面几篇博客,我们依次介绍了local和remote的一些内容,其实再分析cluster就会简单很多,后面关于cluster的源码分析,能够省略的地方,就不再贴源码而是一句话带过了,如果有不理解的地方,希望多翻翻之前的博客。 在使用cluster时,配置文件中的akka.actor.provider 阅读全文
posted @ 2018-08-02 16:33 gabry.wu 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 一个设计优秀的工具或框架,应该都有一个易用、强大的插件或扩展体系,akka也不例外。 akka的扩展方法非常简单,因为只涉及到两个组件:Extension、 ExtensionId。其中Extension在每个ActorSystem中只会加载一次,然后被akka管理。你可以在ActorSystem启 阅读全文
posted @ 2018-08-02 09:26 gabry.wu 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 在akka官网中关于远程actor交互,介绍了两种方法,一种是通过actorSelection查询,另一种是通过actorOf在远程节点创建一个actor。actorSelection我们之前的博客中已经介绍过,创建远程actor也有过简要说明,但其原理并没有做过多分析。下面就来分析一下如何在远程节 阅读全文
posted @ 2018-08-01 14:23 gabry.wu 阅读(660) 评论(0) 推荐(0) 编辑