- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们假设一个使用 Akka Typed 实现的应用程序有一个持久化角色。作为其操作的一部分,这个持久性 actor 创建了 transient (或非持久性)子 actor,每个子 actor 都有一个唯一的 ID,这些 ID 是持久状态的一部分。持久化 actor 还需要某种方式与其子级进行通信,但我们不想持久化子级的 ActorRef
,因为它们实际上并不是状态的一部分。在恢复时,持久性 actor 应该根据恢复的状态重新创建它的 child 。这听起来不像是一个非常不寻常的用例,我正试图弄清楚什么是最简洁的实现方式。我可以在我的命令处理程序中的 andThen
Effect
中创建 child Actor ,这是为了副作用,但是没有办法保存 child 的 ActorRef
从那里。这似乎是类型化 Persistence API 的一个更普遍的特征——在持久性 actor 中很难有非持久性状态(在这种情况下可以用于存储 transient 子 ActorRef
)。我想出的一个解决方案是使用一种“代理”actor 来创建子级,保留 ID 和 ActorRef
的映射,并根据 ID 转发消息。持久性 actor 持有对该代理 actor 的引用,并在每次需要创建新 child 或向其中一个现有 child 发送内容时联系它。不过,我对此有不同的看法,如果有人能指出我更好的解决方案,我将不胜感激。
最佳答案
如果您不使用快照,那么持久性机制不会存储 State
对象,它会存储导致该 State< 的
对象。在恢复时,它只是按照发生的顺序重新播放那些 Event
序列Event
,您的 eventHandler
将返回一个修改后的 State
对象,该对象反射(reflect)了每个事件的影响。
这意味着 State
对象可以包含本身不持久但仅由某些 Event
的处理设置的值。实际上,它们是从 State
中的持久值派生的缓存值。
在您的情况下,导致创建 transient actor 的操作将被捕获为 actor 上的 Event
。因此,您可以在 eventHandler
中创建 transient actor,并将 ActorRef
放入新的 State
对象中。当 actor 恢复时,它将重播该事件,您的 actor 将重新创建 transient actor。
如果您正在使用快照,那么我不认为快照对象与您的 State
对象类型相同,因此您可以在没有 ActorRef 的情况下快照状态
并在收到 SnapshotOffer
消息时重新创建它们。
关于scala - 在 Akka Typed persistent actor 中创建子 actor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617841/
我有一个数据框: title | cast ------------------------------ movie1 | cast1,cast2,cast3 movie2
据我所知,Actor 模型是一种关于并发的理论。 Erlang 和 Scala 都实现了这个理论模型,但它们的实现都不完全符合 Actor 模型。 从计算机科学家的角度来看,Erlang、Scala
我是 akka 流的新手。我将 kafka 用作源(使用 ReactiveKafka 库)并通过流对数据进行一些处理并使用订阅者 (EsHandler) 作为接收器。 现在我需要处理错误并通过错误处理
考虑以下代码示例(版本 1)。此处父 actor (ActorA) 向子 actor (ActorB) 发送消息,然后停止自身。由于父 actor 的自停止,在高负载下,子 actor 甚至在从邮箱中
我有以下 Scala 代码: package dummy import javax.servlet.http.{HttpServlet, HttpServletRequest => H
如何描述“数据流编程”和“ Actor 模型”之间的区别?据我了解,它们并非无关,但又不相同。 DF 是否是一个更广泛的概念,其要点是与控制流模型的区别,而 Actor 模型是更详细的和理论上有根基的
GPars 中的 Actor 有自己的消息队列(邮箱)。假设一个参与者有 15 条待处理的消息,然后系统突然宕机(比如由于电源故障)。这 15 条消息会发生什么。当系统再次启动并运行时,消息队列会自动
我刚刚开始使用 AKKA,并且有一个关于非参与者代码如何与参与者代码对话的基本问题。 非参与者代码如何调用参与者并获得响应?我试过使用 Patterns.ask 从非 Actor 调用 Actor ,
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: Casting vs using the ‘as’ keyword in the CLR 我最近了解到一种不同
我在设置边界矩形位置时遇到麻烦,这就是我问这个的原因。当我设置 Actor 类型的对象的边界矩形位置时,看来我传递给 [setBounds(x,y,with,height)] 2 的坐标相对于 Act
我是 Actor 模型的新手。任何人都可以解释 Actor 模型中 Actor 的生命周期吗?我一直在文档中寻找答案,但找不到任何令人满意的内容。 我对 Actor 完成后做什么很感兴趣onRecei
例如,我有两个 Actor ——一个父 Actor 和一个子 Actor 。当 parent 收到一条消息时,它会产生与消息中指定的一样多的子actor。如何测试此功能?有没有办法模拟上下文或其他方法
我目前在 Futures 编程,我对 Actor 很好奇。我想听听有经验的声音: Actor 相对于 future 有什么优势? 我什么时候应该使用一种而不是另一种? 据我所知, Actor 持有状态
Actor 模型框架(例如 Orleans )和复杂事件处理 (CEP)(例如 Apache Storm )之间有什么区别? 其中每种方法都适用(或者一种方法比另一种方法更适用)的使用示例肯定会有所帮
你们中的任何人都可以帮助我理解传入的基本消息吗scala 使用 Actor 模型? 我正在尝试编写一个包含 3 个 Actor 的简单程序。 Actor “BossActor”创建了 2 个 Acto
Akka 1.1.3 文档指出“become 方法对于许多不同的事情都很有用,但它的一个特别好的例子是它用于实现有限状态机 (FSM) 的示例”。在运行时热交换 Akka actor 的实现还有哪些其
我正在尝试使用参与者实现消息处理管道。管道的步骤包括读取、过滤、扩充以及最后存储到数据库中等功能。类似于此:http://sujitpal.blogspot.nl/2013/12/akka-conte
可以使用 actor.send() 或 actor.offer() 向 Actor 发送消息一旦我的 Actor 从其 channel 收到消息,我想返回响应。我该怎么做呢?我没有看到任何明显的内置方
你们中的任何人都可以帮助我理解传入的基本消息吗scala 使用 Actor 模型? 我正在尝试编写一个包含 3 个 Actor 的简单程序。 Actor “BossActor”创建了 2 个 Acto
我目前正在尝试保存特殊 Actors所以如果加载旧 map ,我可以再次将它们放在 map 上。因此我想将它们放入 HashMap> monsterAtMap 中并从那里删除它们Stages .所以我
我是一名优秀的程序员,十分优秀!