问题标签 [akka-actor]

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 投票
1 回答
109 浏览

scala - 在 akka.testkit.TestKit 中测试消息转发

我想测试以下场景:

假设我有一个父演员,它创建了两个像这样的子演员。

我想测试一下,如果父母得到消息,他会向自己的两个孩子'ping'发送 '消息。ping forwarded'

是否可以使用 TestKit 做到这一点?

0 投票
1 回答
137 浏览

scala - 如何使用Try在scala中出现异常后执行代码

我有两个演员,他们可以返回在我的情况下是布尔值的结果,或者他们可以抛出异常这是我的代码

在这里,我想实现
场景 1,如果 futureA 和 FutureB 成功我应该得到类似 (futureResponseA,futureResponseB) //(true, true)

方案 2如果 futureA 失败它应该继续 FutureB 如果它成功返回我应该得到类似 (exceptionOfFutureA,resultofFutureB)

场景3如果futureA成功返回并且futureB失败我应该得到类似(futureResponseA,exceptionOfFutureB)

场景 4如果 futureA 和 futureB 都失败了,我应该得到类似 (exceptionOfFutureA,exceptionOfFutureB)

为此我尝试了 val futureA = ask(ActorA, MessageA(obj)).mapTo[Boolean] val futureB = ask(ActorB, MessageB(obj)).mapTo[Boolean]

但我在这val result条线上遇到错误

我如何存档这些扫描仪请指导

0 投票
1 回答
541 浏览

scala - 这与 akka 演员类中的自我

假设我有一个非常简单的演员类,它接收任何消息并打印到控制台。

正如你所看到的,我同时使用thisselfhere,两者都有不同的值。它的输出类似于:

我想了解和之间的区别selfthis因为在复杂场景(生产系统)中,如果演员中断,例如:抛出一个异常,而不是我认为的值this会改变。

0 投票
0 回答
100 浏览

scala - 命名 akka-actors 的最佳实践(在伴生对象中)

我有几个这样定义的akka​​-actors:

在这些演员中,在我的应用程序的任何给定时刻,最多只有一个瞬间是“活着的”,因此,例如,只有在旧的演员死SomethingActor了时才能创建新的演员。SomethingActor

现在,我不认为像这样定义演员名称:val name: String = "somethingActor"很好,所以我一直想知道我是否可以使用这样的东西:

这会被认为是不好的做法吗?有没有更好的方法来处理这个?我(想我)需要将名称保存在伴生对象中,以便能够使用ActorSystem.actorSelection(path: String)docu)从我的程序中的另一个点搜索演员。

0 投票
1 回答
117 浏览

scala - 仅保留最新消息的节流 akka-actor

情况

我正在使用 akka 演员来更新我的网络客户端上的数据。其中一个参与者仅负责发送有关 single Agents 的更新。这些代理更新得非常快(每 10 毫秒)。我现在的目标是限制这种更新机制,以便Agent每 300 毫秒发送一次的最新版本。

我的代码

到目前为止,这是我想出的:

问题

这个演员(BroadcastSingleAgentActor)按预期工作,但我不能 100% 确定这是否是线程安全的(更新queue时可能会清除它)。此外,这并不意味着我在充分利用 akka 提供给我的工具。我找到了这篇文章(Throttling Messages in Akka 2),但我的问题是我需要保留最新Agent消息,同时删除它的任何旧版本。有没有类似于我需要的例子?

0 投票
1 回答
255 浏览

scala - 使用 Akka IndirectActorProducer 和可序列化的 Props

我想将 Guice 依赖注入与 Akka Actors 一起使用。

此处的Akka 文档建议IndirectActorProducer用于依赖注入。但是没有解释,或者我不明白,原因。

在我看来,它应该用于避免在 Props 中传递不可序列化的组件/服务。但是我发现的其他示例(herehere)传递了整个Injector类,我很确定它是不可序列化的。

所以我的问题是:

  1. 应该如何以及为什么IndirectActorProducer要使用?
  2. Props必须是可序列化的?可以将 GuiceInjector作为 Props 参数传递吗?

我知道有类似的问题,但我认为还没有一个明确的答案:

0 投票
1 回答
33 浏览

akka - 如何在 akka 测试中使用 TestProbe 作为子角色?

在测试某个父actor时,如果它创建的任何子actor都是TestProbes,那会很方便。这可以按照文档中的建议通过以下方式实现:

将孩子从父母那里外化

但是,这不适用于涉及停止子演员的测试,因为只有演员的直接父母才被允许停止它。

有没有其他技术可以在这里工作?

0 投票
1 回答
153 浏览

java - 可以将 ActorContext (getContext()) 传递到 Actor 外部以创建子 Actor 吗?

我想要一个 ActorFactory 类如下

使用上述工厂类创建子actor是否可以,或者这被认为是一种不好的做法?如果被认为是不好的做法,那为什么?

例如:

0 投票
1 回答
456 浏览

scala - 如何恢复在处理它自己发送的消息时失败的akka​​ actor?

我有以下示例演员代码。

在这里,CountingActor基本上是向自己发送一条Count消息。然后它调用一些可能失败的外部依赖项。它还在计数时对其内部状态进行了一些更改。我还实现了一个简单的SupervisorActor. 这个演员创建了CountingActor作为它的孩子。

当监管策略设置为Restart。我得到了预期的结果。演员数到 3,因为看到异常而失败。preRestart钩子向收件箱发送一条新消息,Start并重新开始计数。

但是当我将监督策略更改为Resume. 演员卡住了,因为它在向自己发送下Count一条消息之前就失败了。

如何解决这个问题,以便在外部依赖失败时从 3 开始计数?

0 投票
1 回答
342 浏览

scala - ActorSystem 单例注入

在我的项目中,我必须使用演员和调度程序。我所有的需求都可以通过只使用一个演员系统来完成。但我需要不止一个班级的调度员和演员。所以我的问题是,如果我应该像下面这样在每个类中注入演员系统,它会只创建一个演员系统还是一个以上?我不想创建多个演员系统,因为这不是推荐的做法。

或者我应该创建另一个对象并在其中声明一个演员系统,并像这样在任何地方使用它:

哪种方法会更好更标准?