问题标签 [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.
scala - 为什么会调用监管策略默认案例?
嗨,我已经对 Parent actor 应用了监督,而孩子是 Throwing MongoTimeOutException(我故意提出该异常以进行测试),但在监督中调用了默认情况。
这是代码:
当我运行此代码时,确实会发生 MongoTimeOutException,但这种情况在监督中被调用。
为什么呢?据我说,它应该援引这种情况:
难道我做错了什么?
请帮我 。
scala - Akka - 演员被阻止后怎么办?
我不确定 Akka 监督要遵循什么方法。
我有一个 Akka 演员,它在消息触发它时列出来自 FTP 服务器的文件。如果连接断开,actor 将因异常(例如 IOException)而失败,这将触发监督。在这一点上,我看到了两种选择:
- 我一直在恢复/重新启动演员,直到服务器恢复正常,可能是指数退避
- 我设置参数(例如 maxNrOfRetries = xy)的方式是主管会在 xy 次后放弃并停止 actor
第一种策略似乎很浪费,但第二种策略似乎带来了另一个问题:最终如何重新启动actor?我觉得调整 Backoff supervisor 的参数是最好的方法,但也许我错过了什么?
scala - 如何更改 Guardian Actor 的默认 Supervisor Strategy Decider?
是否可以更改监护人的主管策略以更改其默认的“决策者”设置。例如,它当前通过停止子 Actor 来处理 ActorKilledExceptions。我们如何能够改变它处理这些异常的方式(即在遇到这些异常时重新启动)?
scala - Actor SupervisorStrategy:处理特定子 Actor 的异常
假设我有以下代码:
并说如果演员是actor1Dispatcher,我只想在ConnectionException上重新启动演员,否则,我只想默认运行。这可能吗?我还没有找到任何东西可以只在一种类型的子actor上运行调度。
akka-stream - 为什么akka-stream重启监督不会重启而只是恢复
考虑这个简单的流:
这实际上打印
这与恢复策略相同。我希望流在失败的未来之后重新启动,输出如下
- 为什么在这种情况下 Resume 和 Restart 策略的行为方式相同?
- 如何从头开始重新启动流?
akka - 从 Akka Actors 重试 http 调用的正确方法是什么
我有一个对外部服务进行 Http 调用的演员。有时服务会以 Http 404 响应,有时还会出现 http 连接错误。再次重试时,这两个都消失了。
重试演员请求的最佳方式是什么。
我能想到的是
使用主管策略并重新启动actor
在重试http调用的actor中使用递归方法,最大重试次数
哪种方法是正确的,1 还是 2。我认为方法 1 对于像重试 Http 调用这样简单的事情来说是一种过度杀伤力。请分享您的建议。
akka - 暂停时发送给参与者的消息会发生什么?
情况是这样的,我的一个演员 (A) 由退避主管 (B) 监督。
我感兴趣的事件顺序如下:
- 系统启动,大家都很开心
- A 在处理消息时失败
- B 现在认为 A 被挂起,直到退避延迟过去
- B 收到一些他打算转发给 A 的消息 (MM)
- 退避延迟消失,B 重新启动 A
- 大家又开心了
在第 4 步,这些消息会发生什么情况?
他们迷路了吗?发送到死信?藏在B的某个地方,并在它重新启动/恢复时发送给A?
现在让我们添加另一个层:A 不是标准 Actor 而是带有 Stash 的 Actor。
在 A 的失败和它的重新启动/恢复之间存储的消息会发生什么? 它被丢弃了吗?是不是没藏起来?它是否保存在藏匿处?
scala - Akka:如何结合 OneForOneStrategy 和 AllForOneStrategy
如果我在 Scala 中为演员定义主管策略,我如何同时使用OneForOneStrategy
和AllForOneStrategy
?有没有一种简单的方法来组合它们,还是我必须定义一个自定义SupervisorStrategy
?这是一个例子:
如果我必须编写自己的主管策略,我该怎么做?我没有找到任何例子。
exception - Akka:我怎样才能在另一个(非儿童)演员中发现一个演员的失败?
我有两个演员:
ProcessManager处理系统中的一些流程(例如,用户注册、购买等)
通知程序- 如果 ProcessManager 发生错误,应通知用户。我需要捕获 ProcessManager 参与者的失败(它失败并因任何原因停止,例如,由于 ActorInitializationException 或达到最大重启时间并且流程管理器参与者已停止)。
如何在Notifier角色中捕获ProcessManager角色的终止(由于失败) ?
编辑 让我解释一下我的问题的背景。
我在 Play 控制器中创建 PM actor 并将消息发送给它(Tell),然后我立即向用户返回 Ok 响应。PM actor 创建另一个子actor,并在创建过程中抛出 ActorInitializationException。我需要通知用户(通过 Web 套接字,使用 Notifier Actor)出现问题。
java - Akka - 如何告诉系统在达到策略的最大重试次数后要做什么?
假设主管参与者定义了某种策略:
假设演员被指示恢复,但在当前持续时间内第 11 次失败。
现在会发生什么?
父演员是否正在升级问题?
它现在能以某种有序的方式停止actor吗(例如告诉子actor关闭与DB的连接)?
在这种情况下是否有另一个覆盖方法可以调用?