问题标签 [akka-supervision]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
akka - 儿童演员是否知道他正在恢复?
想象一个直接的监督层次结构。孩子死了。父亲决定给Restart
孩子。Restart
ed的时候,postRestart
和朋友们都被叫了,但是如果父亲决定让孩子恢复怎么办?儿童演员是否知道他正在恢复?顺便说一句。父亲是否可以访问导致孩子异常的消息?
scala - 如何用询问模式和监督处理异常
我应该如何处理 DbActor 在这里抛出的异常?我不确定如何处理它,应该通过管道失败案例吗?
很高兴得到您的想法,在此先感谢!
akka - Akka 通知远程参与者出错
关于我正在构建的新 akka 应用程序,我遇到了设计挑战。问题/挑战是:在客户端我做了一个简单的演员,它发送一个请求,然后使用 become() 等待正确的服务器回答,当然还包括超时消息,以防万一我不'不能在适当的时候得到答复。然而,有趣的是在服务器端。在这里,我有以下结构:
Actor A(配置为循环路由器)此路由器正在接收来自客户端的所有请求。
然后演员 A 将消息转发给演员 A1、A2...Ax,这一切都是在演员 A 的上下文中创建的,这意味着它是他们的监督者。
在正常情况下,Axe 只能回复发件人,因为消息已转发,但是......如果出现错误,我想除了将其记录在服务器日志上之外,还给用户 som有关已发生错误的信息。
在完美的世界中,我希望能够以某种方式在主管策略中只说 getErrorActorsLastSender() 之类的内容,然后获取导致问题的客户端的 ActorRef。我更喜欢这个的原因是,我将有一个地方来处理所有的错误,并且所有不可预见的异常都会至少以某种通用的方式进行处理。
另一种方法是覆盖每个子actor上的prerestart()方法,然后制定主管策略以在抛出异常时重新启动actor。但是,这将要求我为 x 个子演员实现此方法。
有什么好的建议,如果这可以从主管策略中获得?
提前致谢。
scala - akka - 使单个演员成为其他几个演员的孩子(在路由器中)
我不确定这是否可行——我可以让一个演员成为许多其他演员的孩子吗?我当然可以将 ref 传递给其他演员,但我也需要监督才能在这种情况下工作——这有可能吗?
例如,这里是一个示例,其中键入了作为系统子级的参与者 - 我希望它是配置路由器中 ConfigResponders 的子级
在这种情况下,我不想要一堆与数据库的连接。
提前致谢!
scala - 防止 akka 演员重新启动子演员
我试图让一个演员在它自己的主管重新启动时Worker
不要重新启动它的子演员。即使在覆盖and之后我也没有成功。日志仍然显示直到重新启动。我是 Akka 和 Actor 模型的新手,我不知道我做错了什么。SubWorker
Mngr
preRestart()
postRestart
Worker
SubWorker
日志
scala - 有人可以解释一下 Akka 监督参数“withinTimeRange”是什么意思吗?
我是 Akka 的新手,我需要一个使用此参数的示例以及使用时的提示!
scala - 在 akka 2.x 中,root actor 是否由其他人监督?
阅读 Akka 文档:http ://doc.akka.io/docs/akka/2.2.3/AkkaScala.pdf其状态部分
但是在层次结构树的顶部,父actor没有主管?
scala - Is it possible/advisable to have a different supervision strategy for different children of an Akka 2 actor?
I'm playing with Akka and I have a design in which a supervisor actor has a child playing role A and several children playing role B. I want to define a supervision policy such as A failures are escalated (terminating the supervisor) and B ones produces the individual actors to be restarted.
Is this possible? Is it advisable?
java - Akka Java 容错和actor重启
我目前正在研究 Akka(Java 版本)中的容错和主管策略。
在 ... http://doc.akka.io/docs/akka/2.3.2/java/fault-tolerance.html和http://doc.akka.io/docs/akka/2.3.2/general/监督.html#supervision
几个问题:
1) 当我们知道会出现什么样的异常时,我们是否应该在我们的演员中使用 try/catch 块?为什么或者为什么不?如果不是,我们是否应该依靠主管策略来有效处理孩子可能抛出的异常?
2)默认情况下,如果没有在父actor中显式配置supervisor,看起来任何抛出异常的子actor都会默认重启。如果你的整个系统中没有一个actors携带状态……我们真的应该重新启动吗?
3) 如果由 system.actorOf( ... ) 创建的顶级演员抛出异常怎么办?你如何在演员系统之外提供监督者策略?
4) 假设演员 A 有一个子演员 B。现在假设演员 A 要求演员 B 做一些工作。
一些代码可能如下所示:
现在......如果演员 A 以某种方式抛出异常怎么办。默认情况下,它由其主管重新启动。问题是,onComplete “关闭”是否仍会在未来某个时间执行,还是在重新启动时有效地“清除”?
5)假设我有一个层次结构,例如:A->B->C。让我们还假设我覆盖了 preRestart ,这样我就不会有效地阻止我的孩子。在 A 的预启动时,他调用 getContext().actorOf(B),在 B 的预启动时,他调用 getContext().actorOf(C)。如果 A 抛出异常,系统中是否会存在多个参与者 B 和多个参与者 C?
谢谢!
scala - Akka 中的错误内核和监督:来自陈旧子节点的消息是否会传递给重新启动的参与者?
我正在尝试遵循最佳实践并在 Akka 中应用错误内核模式。根据这里的报价:
如果一个actor携带了非常重要的数据(即如果可以避免,它的状态不会丢失),这个actor应该将任何可能危险的子任务分配给它所监督的子任务,并适当地处理这些子任务的失败。根据请求的性质,最好为每个请求创建一个新的子请求,这样可以简化收集回复的状态管理。这被称为 Erlang 的“错误内核模式”。
...创建孩子并将容易出错的工作委托给他们是一个好主意,将重要状态集中在父母/主管演员中。
在这种情况下,如果具有重要状态的参与者由于某种原因重新启动,我是否需要处理来自它的陈旧子项(在重新启动之前创建)的消息?
让我们用例子来说明这一点。
让我们假设我有 3 个演员:(A
是 的父母/主管B
)、B
(是 的父母/主管C
,包含重要状态)和C
。
A
的监督策略被配置为在异常时重新启动它的孩子。
C
在B
的构造函数中创建。
然后让我们假设消息bc
是从表单发送B
到的C
。C
开始处理它(让我们想象它在那里运行长时间运行的计算),一旦完成将回复B
with cb
。
现在,让我们假设before cb
被发送到并由B
A
将消息发送ab
到处理B
。此消息导致B
抛出异常,并且由于A
的监督策略决定B
将重新启动。
作为 的子级B
C
将在B
' 重新启动期间停止(C'
将在B
' 的构造函数中创建新的)。
在重新启动之前发送的重新启动B
接收是否会重新启动?cb
C
B
如果是, ( ) 的子项是否会sender
被cb
视为C
restarted 的子项B
?演员 ref 的C
和C'
是否相等(假设C
和C'
s 的名字相等)?