问题标签 [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 - 如何监督 akka-Http HttpApp 服务器?
我有一个具有一些功能的 akka ActorSystem,我使用 akka-http 服务器(HttpApp)作为端点。这个 http 服务器为遗留用户提供了一些没有用 akka 实现的服务。我想监督这个 HttpApp 服务器以管理重启等。因此,我需要知道 HttpServer 何时停止或崩溃,以便做出反应并重新启动此 http 端点。如何监督 akka-Http HttpApp 服务器?
scala - postRestart 和 preRestart 方法没有在 akka actots 中被调用
我正在关注本教程,这是我的代码
这就是我向这个演员发送消息的方式
PostRestart() 和 preRestart() 方法没有调用,但是 preStart() 和 postStop() 被调用,请指导我哪里做错了
scala - AskTimeOutException 的监督策略应该是什么
我是 akka 监督的新手,我想知道当我们收到询问超时异常时哪种监督策略好,更合适的 Restart 或 Resume 这里是示例代码
请指导我,谢谢
java - Akka:未使用 Java 注册的自定义 akka 监督策略
我将探索Akka
生命周期和Akka
演员监督策略。我正在创建自己的异常和覆盖public SupervisorStrategy supervisorStrategy()
方法来探索 akka 的生命周期及其恢复策略。以下是我的代码:
在receive()
我抛出EsclateException
日志的方法中继续而不是终止参与者。但是当我用 替换异常代码时throw new Error()
,演员停止工作并终止。从输出来看,我的SupervisorStrategy
未注册和演员似乎在 default 上运行SupervisorStrategy
。如何注册我的策略?
以下是我的调用代码:
java - Akka-Java:无法使用管道模式在父级中接收未来消息
我正在为一位家长创建一名儿童演员。我的子演员执行一些业务逻辑并将值返回给 scala Future。当我向Future
我的父母发送消息时,我无法收到我未来的消息。以下是我的代码:
儿童演员
父演员
日志
更新
我正在尝试发送tell
给父母而不是未来,但父母仍然没有收到消息。以下是我的更改:
预期,父matchAny(msg -> {System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");LOG.info("unknown message: "+ msg);})
案例处理此消息。但什么也没有发生。
更新 2
根据我的调查,当我注释掉future.onFailure(futureFailureHandler(), ec);
语句时,parent.tell(23, ActorRef.noSender());
执行成功。仍然不明白为什么会发生这种情况。
我的要求是,将未来的消息发送给父actor,并在akkaactor系统中处理未来的容错故障。
java - 在 Akka 演员重启时重新发送“init”消息
我有一个子“消费者”演员,它连接到一些外部数据流,解析其消息并将它们进一步转发到应用程序内部。这个“生产者”系统具有发布-订阅体系结构,但在重新连接后不会恢复订阅。目前我将这些订阅存储在父actor中并在主管中重新发送它们,但问题是当孩子重新启动时,它们被转发到死信队列。我本可以尝试在延迟后将这些安排给父母,但这可能会干扰订阅顺序,这很重要。
那么如何在孩子重新启动时将这些“重新订阅”消息传递给孩子呢?
scala - Akka 主管策略 - 正确的用例
我一直在使用 Akka Supervisor Strategy 来处理业务逻辑异常。
阅读最著名的 Scala 博客系列Neophyte之一,我发现他为我一直在做的事情赋予了不同的目的。
例子:
假设我有一个 HttpActor 应该联系外部资源,如果它关闭,我将抛出一个异常,现在是一个ResourceUnavailableException
.
如果我的主管发现了这一点,我会在我的 HttpActor 上调用 Restart,在我的 HttpActorpreRestart
方法中,我会调用 do aschedulerOnce
来重试。
演员:
主管:
这里有什么意义?
根据调度程序,如果我的doRequest
方法抛出ResourceUnavailableException
,主管将得到它并重新启动actor,强制它在一段时间后重新发送消息。我看到的优点是我免费获得重试次数和处理异常本身的好方法。
现在查看博客,他展示了一种不同的方法,以防您需要重试内容,只需发送如下消息:
在 的情况下AskTimeoutException
,Future
他将结果作为ComebackLater
对象进行管道传输,他将处理这样做:
对我来说,这几乎是你可以用策略主管做的事情,但是以手动方式,没有内置的重试次数逻辑。
那么这里最好的方法是什么,为什么?我使用 akka 主管策略的概念完全错误吗?
java - Akka BackOff 监督策略
我正在BackOff
对我的演员使用 akka 监督。每当我的演员收到消息时,我都会收到 akka 死信消息。以下是我的日志:
以下是我的BackOff
主管代码:
退避如何工作以及如何解决上述问题?
scala - 将 Supervisorstrategy 作为具体 Actor 中的 val 覆盖
Scala 中的Actor
trait 是这样定义的,
但是我看到具体参与者的所有示例代码都定义如下,
我想了解的是为什么被 supervisorStrategy
覆盖为val
?
为什么不将其覆盖为def
?
是因为内存方面的考虑,比如我们不希望每次调用该方法时都进行此评估吗?
scala - Akka:使用 TestProbes 测试监督策略
我正在测试一个生成和协调童工演员的演员。为了做到这一点,我用TestProbe
s 替换了子 actor 创建,它用于观察和模拟交换的消息。
但是,我在尝试测试演员的监督策略时遇到了问题。我能够通过AutoPilot
在TestProbe
. 但事实证明,TestProbe
s 默认由系统监护人监督,我的测试参与者没有收到错误通知。
想到的一个想法是设置一个中间ForwarderActor
s 层,该层将由测试参与者监督并生成测试异常,但否则会在TestProbe
测试参与者之间转发消息,如下所示:
这样,actor 将得到适当的监督,但仍然可以使用TestProbe
s 检查消息。
我想知道是否有更简单的方法可以做到这一点?