首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Akka actorFor vs传递ActorRef

在这个问答内容中,我们可以看到两个关键词:Akka和ActorRef。Akka是一个基于Actor模型的并发和分布式系统的开发框架,它可以用于构建高并发、分布式和容错的应用程序。ActorRef是Akka中的一个核心概念,它是一个引用,可以用来向Actor发送消息。

在Akka中,有两种方法可以获取ActorRef:actorFor和传递ActorRef。

  1. actorFor:这是一种基于Actor路径的方法,它可以根据Actor路径来获取ActorRef。Actor路径是Actor在Actor系统中的唯一标识符,通常由Actor系统的名称和Actor的名称组成。使用actorFor方法可以获取ActorRef,但是这种方法存在一些缺点,比如容易出现路径问题,不易于重构和重新部署等。
  2. 传递ActorRef:这是一种更为推荐的方法,它可以将ActorRef作为参数或消息的一部分传递给其他Actor。这种方法可以避免路径问题,同时也可以更好地支持容错和分布式。

总的来说,传递ActorRef是一种更为推荐的方法,因为它可以避免路径问题,同时也可以更好地支持容错和分布式。但是,如果你需要通过Actor路径来获取ActorRef,可以使用actorFor方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Akka事件驱动新选择

Akka 允许我们专注于满足业务需求,而不是编写初级代码。在 Akka 中,Actor 之间通信的唯一机制就是消息传递。...事件驱动 图片 Actor 模型 VS Reactor模型 以Netty的Reactor模型为例(redis同理),本身的Reactor模型即是从事件驱动(NeetyEventLoop)的设计模式,Netty...图片 Actor模型 而Akka的Actor模型重在消息传递,但是第一个特性仍然是事件驱动模型。...", ActorRef.noSender()); } } 图片 图片 End to End Argument 在End to End Argument论文中指出: 端到端的可靠通信,...从全局可靠性来考虑,就要从消息的发送,收,传递,确认等流程来确认,从业务角度出发,而不是强调中间件的不可靠性,而且万事都有不可确定性,如果真的提升到如此角度,那么确实不用开发了。

88930

Actor 并发控制模型使我想到了王者荣耀对战伤害控制实现

前言一般来说,我们有两种策略来在并发线程中实现通信:共享内存和消息传递。...消息传递在 Actor 模型中通信通过消息传递实现,一个 Actor 可以向另外一个 Actor 发送消息,接受到消息后接收者会进行一些处理,比如进行一些计算或改变自己状态,但接受到的消息不一定会立即处理而是按照消息接收顺序进行异步处理...分布式: Actor 模型天生支持分布式计算,因为 Actors 可以在不同的节点上运行,通过网络进行消息传递。...>实现创建一个表示玩家的 Actorimport akka.actor.AbstractActor;import akka.actor.ActorRef;import akka.actor.Props;...;import akka.actor.ActorRef;import akka.actor.Props;public class GameController extends AbstractActor

32252

Akka 指南 之「邮箱」

UnboundedControlAwareMailbox 传递以更高优先级扩展akka.dispatch.ControlMessage的消息 由两个java.util.concurrent.ConcurrentLinkedQueue...支持 等优先级邮件的传递顺序未定义,与UnboundedStablePriorityMailbox相反 是否阻塞:No 是否有界:No 配置名称:akka.dispatch.UnboundedPriorityMailbox...BoundedPriorityMailbox 由包装在akka.util.BoundedBlockingQueue中的java.util.PriorityQueue提供支持 优先级相同的邮件的传递顺序未定义...BoundedControlAwareMailbox 传递以更高优先级扩展akka.dispatch.ControlMessage的消息 由两个java.util.concurrent.ConcurrentLinkedQueue...interface used for mailbox requirements mapping public interface MyUnboundedMessageQueueSemantics {} import akka.actor.ActorRef

1.5K30

Akka 指南 之「集群客户端」

ClusterClient.Send:如果存在匹配路径,则消息将传递给一个收件人。如果多个条目与路径匹配,则消息将被传递到一个随机目标。...ClusterClient.SendToAll:消息将传递给具有匹配路径的所有收件人。...ClusterClient.Publish:消息将传递给所有已注册为命名主题订阅者的收件人 Actor。...如果客户端应该直接与集群中的 Actor 通信,那么可以在回复消息中传递原始发送者。 当建立到接待员的连接时,ClusterClient将缓冲消息,并在建立连接时发送它们。...一如既往,额外的逻辑应该在目标(确认)和客户端(重试)Actor 中实现,以确保至少一次的消息传递。 一个示例 在集群节点上,首先启动接待员。

1.7K30

Akka事件驱动新选择入门

官网:https://guobinhit.github.io/akka-guide/ 图片 Akka是一个基于Actor模型的分布式计算框架,其主要目标是简化并发编程和分布式系统开发。...实现原理: Akka基于Actor模型,将所有组件抽象为Actor,每个Actor都有自己的内部状态和消息队列,并通过消息传递进行通信。...入门demo: 以下是一个简单的Akka demo,演示如何创建一个Actor并发送消息给它: java复制代码import akka.actor.AbstractActor; import akka.actor.ActorRef...args) { final ActorSystem system = ActorSystem.create("hello-world-system"); final ActorRef..., ActorRef.noSender()); system.terminate(); } } 示例代码解释: 这个demo定义了一个名为HelloWorld的Actor,在接收到消息时会打印出来

42220

Akka 指南 之「Actors」

import akka.actor.ActorRef; import akka.actor.ActorSystem; 使用ActorSystem将创建顶级 Actor,由ActorSystem提供的守护者...但也有例外,如 使用「至少一次传递」能力发送消息 启动与远程系统的第一次连接 在所有其他情况下,可以在 Actor 创建或初始化期间提供ActorRef,将其从父级传递到子级,或者通过将其ActorRef...在所有这些方法中,你可以选择传递自己的ActorRef。将其作为一种实践,因为这样做将允许接收者 Actor 能够响应你的消息,因为发送者引用与消息一起发送。...你可以通过使用getSender().tell(replyMsg, getSelf())发送ActorRef来进行回复。你还可以存储ActorRef以供稍后回复或传递给其他 Actor。...通过消息传递初始化 有些情况下,在构造函数中无法传递 Actor 初始化所需的所有信息,例如在存在循环依赖项的情况下。

4K30

PlayScala 2.5.x - 实现完全异步非阻塞的流数据导出

介绍 从Play2.5.x开始,Play使用Akka Streams实现流处理,废弃了之前的Enumerator/Iteratee Api。...根据官方文档描述,迁移至Akka Streams之后,Play2.5.x的整体性能提升了20%,性能提升相当可观。...JSONCollection]("qa") def exportDataStream = Action { implicit request => val source = Source.actorRef...函数启动一个actor实例sourceActor负责收集报表数据,Source.actorRef的第1个参数bufferSize用于指定缓冲区大小,即Play来不及写回响应的数据暂时放在缓冲区,第2个参数...数据传递过程如下: foldBulks(读取查询结果) -> sourceActor(收集查询结果) -> source(生产者) -> Ok.chunked(消费者) 下面是浏览器中看到的效果: ?

82140

Akka 指南 之「消息传递可靠性」

Akka 采用分布式计算,并通过消息传递使通信的易出错性变得明确,因此它不会试图撒谎并模拟泄漏的抽象。这是一个在 Erlang 成功使用的模型,需要用户围绕它设计自己的应用程序。...由于没有保证的传递,任何信息都可能被丢弃,即不能到达A2。 在此,需要注意的是,Akka 的保证适用于邮件进入收件人邮箱的顺序。...同样的机制在Router的构建过程中使用,更精确地说是路由的ActorRef,因此对于部署了路由器的 Actor 来说,同样的问题也存在。...高级抽象 基于 Akka 核心中的一个小而一致的工具集,Akka 还提供了强大的、更高级的抽象。 消息模式 如上所述,对可靠传递需求的直接回答是一个明确的ACK-RETRY协议。...Akka 持久性模块的“至少一次传递”支持具有业务级确认的ACK-RETRY协议。通过跟踪通过"至少一次传递"发送的消息的标识符,可以检测到重复的消息。

1.7K10

Akka 指南 之「分布式数据」

; import akka.actor.ActorRef; import akka.actor.Cancellable; import akka.cluster.Cluster; import akka.cluster.ddata.DistributedData...这是一种传递上下文信息(例如原始发送者)的方便方法,无需使用ask或维护本地相关数据结构。...在Get消息中,你可以通过与上述Update消息相同的方式传递可选的请求上下文。例如,在接收和转换``GetSuccess之后,可以传递和回复原始发送者。...在Delete消息中,你可以通过与上述Update消息相同的方式传递可选请求上下文。例如,在接收和转换DeleteSuccess之后,可以传递和回复原始发件人。...这里对delta的支持意味着作为所有这些映射的基础键类型的ORSet使用delta传播来传递更新。

2.5K40

Akka 指南 之「Actor 引用、路径和地址」

akka.pattern.ask创建这个 Actor 引用。 DeadLetterActorRef是死信服务的默认实现,Akka 将其目的地关闭或不存在的所有消息路由到该服务。...发送到旧 Actor 引用的消息将不会传递到新的化身,即使它们具有相同的路径。...选择(selection)可用于与所述 Actor 通信,并且在传递每条消息时查找所述选择对应的 Actor。...要获取绑定到特定 Actor 生命周期的ActorRef,你需要向 Actor 发送消息,例如内置标识消息,并使用来自 Actor 的答复的sender()引用。 绝对路径 vs....由于与选定内容匹配的 Actor 的确切集合可能会发生变化,即使消息正在传递给收件人,也不可能观看选定内容的实时变化。

1.6K20

Akka(1):Actor - 靠消息驱动的运算器

Akka是个工具库(Tools-Library),不是一个软件架构(Software-Framework),我们不需要按照Akka的框架格式去编写程序,而是直接按需要构建Actor去异步运算一项完整的功能...通过Future传递计算结果能实现不阻塞(non-blocking)运算。下面我们用QueryActor来实现并发运算: val r1 = QueryActor !...我们在本篇先介绍一下ActorRef,Mailbox,State和Behavior。 1、ActorRefAkka系统是一个树形层级式的结构,每个节点由一个Actor代表。...我们可以重复用这个路径来构建Actor,但每次构建都会产生新的ActorRef。...所以ActorRef是唯一的,代表了某个路径指向位置上的一个运行时的Actor实例,我们只能用ActorRef来向Actor发送消息 2、Mailbox:可以说成是一个运算指令队列(command queque

59160
领券