问题标签 [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.

0 投票
0 回答
93 浏览

akka - 如何监督 akka-Http HttpApp 服务器?

我有一个具有一些功能的 akka ActorSystem,我使用 akka-http 服务器(HttpApp)作为端点。这个 http 服务器为遗留用户提供了一些没有用 akka 实现的服务。我想监督这个 HttpApp 服务器以管理重启等。因此,我需要知道 HttpServer 何时停止或崩溃,以便做出反应并重新启动此 http 端点。如何监督 akka-Http HttpApp 服务器?

0 投票
1 回答
821 浏览

scala - postRestart 和 preRestart 方法没有在 akka actots 中被调用

我正在关注本教程,这是我的代码

这就是我向这个演员发送消息的方式

PostRestart() 和 preRestart() 方法没有调用,但是 preStart() 和 postStop() 被调用,请指导我哪里做错了

0 投票
0 回答
82 浏览

scala - AskTimeOutException 的监督策略应该是什么

我是 akka 监督的新手,我想知道当我们收到询问超时异常时哪种监督策略好,更合适的 Restart 或 Resume 这里是示例代码

请指导我,谢谢

0 投票
1 回答
240 浏览

java - Akka:未使用 Java 注册的自定义 akka 监督策略

我将探索Akka生命周期和Akka演员监督策略。我正在创建自己的异常和覆盖public SupervisorStrategy supervisorStrategy()方法来探索 akka 的生命周期及其恢复策略。以下是我的代码:

receive()我抛出EsclateException日志的方法中继续而不是终止参与者。但是当我用 替换异常代码时throw new Error(),演员停止工作并终止。从输出来看,我的SupervisorStrategy未注册和演员似乎在 default 上运行SupervisorStrategy。如何注册我的策略?

以下是我的调用代码:

0 投票
1 回答
522 浏览

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系统中处理未来的容错故障。

0 投票
2 回答
538 浏览

java - 在 Akka 演员重启时重新发送“init”消息

我有一个子“消费者”演员,它连接到一些外部数据流,解析其消息并将它们进一步转发到应用程序内部。这个“生产者”系统具有发布-订阅体系结构,但在重新连接后不会恢复订阅。目前我将这些订阅存储在父actor中并在主管中重新发送它们,但问题是当孩子重新启动时,它们被转发到死信队列。我本可以尝试在延迟后将这些安排给父母,但这可能会干扰订阅顺序,这很重要。

那么如何在孩子重新启动时将这些“重新订阅”消息传递给孩子呢?

0 投票
1 回答
1949 浏览

scala - Akka 主管策略 - 正确的用例

我一直在使用 Akka Supervisor Strategy 来处理业务逻辑异常。

阅读最著名的 Scala 博客系列Neophyte之一,我发现他为我一直在做的事情赋予了不同的目的。

例子:

假设我有一个 HttpActor 应该联系外部资源,如果它关闭,我将抛出一个异常,现在是一个ResourceUnavailableException.

如果我的主管发现了这一点,我会在我的 HttpActor 上调用 Restart,在我的 HttpActorpreRestart方法中,我会调用 do aschedulerOnce来重试。

演员:

主管:

这里有什么意义?

根据调度程序,如果我的doRequest方法抛出ResourceUnavailableException,主管将得到它并重新启动actor,强制它在一段时间后重新发送消息。我看到的优点是我免费获得重试次数和处理异常本身的好方法。

现在查看博客,他展示了一种不同的方法,以防您需要重试内容,只需发送如下消息:

在 的情况下AskTimeoutExceptionFuture他将结果作为ComebackLater对象进行管道传输,他将处理这样做:

对我来说,这几乎是你可以用策略主管做的事情,但是以手动方式,没有内置的重试次数逻辑。

那么这里最好的方法是什么,为什么?我使用 akka 主管策略的概念完全错误吗?

0 投票
0 回答
800 浏览

java - Akka BackOff 监督策略

我正在BackOff对我的演员使用 akka 监督。每当我的演员收到消息时,我都会收到 akka 死信消息。以下是我的日志:

以下是我的BackOff主管代码:

退避如何工作以及如何解决上述问题?

0 投票
1 回答
169 浏览

scala - 将 Supervisorstrategy 作为具体 Actor 中的 val 覆盖

Scala 中的Actortrait 是这样定义的,

但是我看到具体参与者的所有示例代码都定义如下,

我想了解的是为什么被 supervisorStrategy覆盖为val
为什么不将其覆盖为def?

是因为内存方面的考虑,比如我们不希望每次调用该方法时都进行此评估吗?

0 投票
0 回答
286 浏览

scala - Akka:使用 TestProbes 测试监督策略

我正在测试一个生成和协调童工演员的演员。为了做到这一点,我用TestProbes 替换了子 actor 创建,它用于观察和模拟交换的消息。

但是,我在尝试测试演员的监督策略时遇到了问题。我能够通过AutoPilotTestProbe. 但事实证明,TestProbes 默认由系统监护人监督,我的测试参与者没有收到错误通知。

想到的一个想法是设置一个中间ForwarderActors 层,该层将由测试参与者监督并生成测试异常,但否则会在TestProbe测试参与者之间转发消息,如下所示:

这样,actor 将得到适当的监督,但仍然可以使用TestProbes 检查消息。

我想知道是否有更简单的方法可以做到这一点?