Actors
Actors Model对分布式并发系统提供了一个高层次的抽象。它让我们不需要关注线程,锁等深奥而又易错的语法,让我们更容易的写出正确的分布式的系统。Actors是由Carl Hewitt在1973年定义的,并在Erlang语言中得到了广泛的应用,并在爱立信公司创建了高并发,可靠的系统。
Akka的Actors和Scala的Actors非常相似,都是从Erlang中借鉴了很多。
第一个例子
class First extends Actor { val log = Logging(context.system,this) def receive = { case "test" => log.info("hello,test") case _ => log.info("other") } } object First extends App { val system = ActorSystem("first") val f = system.actorOf(Props[First],"f"); f ! "test" system.shutdown }
Akka实现Receive函数,必须穷尽所有消息,否则akka.actor.UnhandledMessage(message, sender, recipient)
将发送至ActorSystem‘s EventStream???
第二个例子
class Second extends Actor{ val first = context.actorOf(Props[First],"f2"); val log = Logging(context.system,this) def receive = { case "test" => log.info("hello,test") case _ => log.info("other") } }
Actor是一个树层结构,system创建的Actor为顶层Actor,Actor里头只能用context进行创建,创建的对象为这个Actor的子Actor。父Actor负责子Actor创建,发送消息,关闭等。
Actor生命周期
Actor有四个回调函数:
def preStart() {} def preRestart(reason: Throwable, message: Option[Any]) { context.children foreach (context.stop(_)) postStop() } def postRestart(reason: Throwable) { preStart() } def postStop() {}1. Actor在初始化的时候,调用preStart这个函数是初始化工作处理的最佳阶段。
2.重启,当Actor在处理消息时,抛出异常,这时候会调用重启过程。
- 旧的Actor的preRestart将会被掉用,默认实现关闭掉所有的子Actor,调用postStop()
- 新的Actor被创建,postReStart将首先被调用,同时默认的初始化调用preStart
相关推荐
读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言
读书笔记:Scala支持的著名的并发编程框架Akka的学习记录
读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习
Akka笔记 Akka消息 文档 源代码 从 Akka记录 文档 源代码 从 Akka测试 文档 源代码 从 Akka消息传递请求和响应 文档 源代码 从arunma / AkkaMessagingRequestResponse分叉
读书笔记:《实战Java高并发程序设计》第2版 第7章使用Akka构建高并发程序 源码
这是一个 alpha 版本; 目前它更像是 RocksDB 和 Akka-Persistence 的实验,而不是 Akka-Persistence 的严肃存储引擎。 安装 将 bintray 添加到您的解析器: resolvers ++= Seq( "hamrah-bintray" at ...
使用 Akka IO 在 Scala 中实现非阻塞 Redis 客户端重新反应基于 Akka I/O 的非...Timeout(5 seconds)// Redis client setupval client = RedisClient("localhost", 6379)笔记下面的示例取自测试用例。每个 API 调用都
笔记 要让多个分片参与者在单独的节点子集上运行,并且可以从集群中的其他节点访问,例如: Counter1 在 node1、node2、node3 上运行 Counter2 在 node7、node8、node9 上运行 Query 想同时查询 Counter1 分片和 ...
6. ** Actors模型**:Scala内置对Akka框架的支持,提供了一种基于Actors的并发模型。Actors是轻量级的并发实体,通过消息传递进行通信,可以有效处理并行和分布式计算。 7. **类型系统**:Scala具有复杂的类型系统...
3. **集群构建**(Xitrum学习笔记20 - 和Akka、Hazelcast组成集群.pdf):Xitrum可以与Akka和Hazelcast等工具集成,实现应用的集群部署,以提高服务的可用性和伸缩性。这部分会讲解如何配置和管理集群,以及如何处理...
接下来,我们来看`akka笔记.txt`中的内容,可能会涉及如何创建Actor以及如何进行远程调用: 1. 创建Actor:使用`Props`和`ActorSystem`创建Actor。例如: ```scala val system = ActorSystem("MySystem") val ...
### Spark源码阅读笔记 #### 一、Spark概述与特性 **Spark** 是一款由加州大学伯克利分校AMP实验室研发的数据处理框架,它极大简化了开发者编写并行应用程序的过程,使得用户能够在集群环境中轻松地运行自己的应用...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和高性能应用开发。本压缩包包含五份PDF文档,旨在帮助初学者快速入门并逐步进阶Scala编程。 第一部分...
akka-http-routes-guard 我发现 Spray.io / Akka-http 新手经常犯常见的错误 - 他们忘记用波浪号 ( ~ ) 运算符连接路由。 在期间,我想编写一个 Scala 宏,当它遇到路由之间缺少的连接运算符时,它会中止编译(或...
**Spark** 是一款由加州大学伯克利分校AMP实验室研发的数据处理框架,它极大简化了大数据应用的开发流程,支持多种编程语言如Java、Scala、Python和R,使得开发者可以根据自己的需求选择最适合的语言。 #### 二、...
有一个实验分支latest-dependency-versions可以使用 Java 9 进行编译,但在成功运行时仍然存在问题。 另请参阅我们较新的教程 ,它扩展了此处的概念,更侧重于服务 ML 模型的用例。 和 , :copyright:版权所有 2018-...
目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 ...Akka 介绍
这个压缩包中的两个文件,"一、CRM笔记.md"和"二 、CRM笔记.md"(可能其中一个文件名有误,此处假设它们是不同的笔记),都是Markdown格式的文档,通常用于记录学习心得或教程。 首先,我们来深入了解一下CRM系统。...
5. Akka框架:Akka是用Scala编写的开源框架,用于构建高度可扩展、容错的应用程序,它充分利用了Scala的Actor模型。 6. Scala与Java互操作:由于Scala是运行在JVM上的,所以可以直接使用Java库,与Java代码无缝集成...