问题标签 [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 回答
599 浏览

scala - Scala: sealed trait objects are not working inside case statement: Akka actors

I have been struggling to deal with the below error related to sealed trait object usage in case statement.This is my code related to akka actors.I am using companion Objects and defined the sealed traits as shown in below scala file.

ActorCreation.scala

Here is the error stack i am getting related to sealed trait object after defining them in companion objects for the respective classes.

For your information , here is build.sbt

0 投票
1 回答
99 浏览

scala - 为什么异步计算会减慢程序的速度?

我正在阅读Akka cookbook并发现在一个示例中提高功能性能很有趣。我有下一个客户对象:

以及actor类的两个实现。

第一的:

第二:

在我的机器First变体中,在 0.12 毫秒内执行,Second在 360 毫秒内。所以Second速度慢了 300 倍。使用htop我发现First在第二种情况下,变体使用 1 个核心对抗所有 4 个核心。是不是因为生成了太多异步任务?以及如何加快fib(n: Int)方法?

0 投票
2 回答
351 浏览

scala - ExecutionContext 导致 Akka 死信

出于某种原因,我必须同时使用 gRPC 和 Akka。当这个演员作为顶级演员开始时,没有任何问题(在这个小演示中)。但是当它成为子actor时,它无法接收到任何消息,并且会记录以下内容:

示例核心:

我试图创建一个新的ExecutionContext像:

为什么会发生这种情况,我该如何调试这样的死信问题(不抛出异常)?

更新:

抱歉,我没有在这里列出所有内容。我使用普通的 Main 方法GrpcActor作为顶级actor进行测试,使用 ScalaTest 作为子actor进行测试,这是一个错误。

正是这个空的测试套件主动关闭了整个actor系统。但问题在于这条线

停产后交货GlobalStart()延迟。

如果没有该行,则可以在关机之前传递消息。

这是正常行为吗?

(我的猜测:碰巧GlobalStart()在该行的关闭消息之后排队,这做了一些繁重的工作并在时间上有所不同)

0 投票
1 回答
754 浏览

java - Akka:如何关闭没有终止的演员

(免责声明:我不是 akka 的初学者)

假设我有一个演员调用了一个永远不会终止的方法(这是一个极端的例子,你可以考虑调用一个有机会在很长一段时间内终止或永远不会终止的方法)。

例如(Java)

现在,如果在处理消息时,参与者调用

演员永远不会终止。

有没有办法在它仍在处理消息时杀死它?如果是,循环会在后台继续吗?

(我想了解的是,是否有办法从 akka 系统中的“无限循环”式故障中恢复)

0 投票
1 回答
435 浏览

scala - 使用 akka 流时的事件顺序

阅读 akka-streams 的文档,我不太清楚消息的顺序以及是否可以执行它。让我用我为聊天服务器编写的一小段代码来设置我的问题的上下文。

为了让我自己的事情变得简单,我将这个流形状与一个非常简单的源和汇一起使用。像这样的东西——

现在,我的担心来了。在终端中打印的事件顺序根本不对。而且我不确定如何解决它。这是我得到的输出——

hi输出中缺少第一条消息。该消息似乎在打印hi之前已发送。UserJoin message

actorRefWithAck我尝试通过使用(我在上面的代码中注释掉)来修复它(并在消息传递方面增加一些安全性) 。它给出了类似的输出。

显然,似乎正在发生的事情是源在发送消息之前发送UserJoin消息。我怎样才能解决这个问题?从概念上讲,我认为我希望在UserJoin message源实现但在它实际发送第一条消息之前立即发送。那可能吗?

谢谢

0 投票
1 回答
183 浏览

akka - akka 演员当前接收函数名称

我有一个有 2 种行为的简单演员

这件事做那些:

ping 自己

记录当前接收函数

将行为更改为行为栏

ping 自己

记录当前接收函数

在这两种情况下,它都会记录“$anonfun$behaviorFoo$1”

为什么第二个日志中不是“$anonfun$behaviorBar$1”?

如果我将代码更改为

它记录了 3 次“$anonfun$receive$1”

是否存在任何获取当前行为(接收)函数名称的方法?或者我需要随时像 log.info("behaviorFoo") 那样硬写?

更新:

对于日志记录问题,我添加了

然后,我的演员代码变成

现在日志看起来像

...您好:behaviourFoo 得到了 Ping

...您好:behaviourBar 得到了 Ping

0 投票
1 回答
733 浏览

java - Akka ActorSystem 永远不会在 Java 中终止

我在 Java 8 中使用 Akka 2.5.6,我想知道完成 de ActorSystem 的正确方法,我的代码的部分功能是处理一些 XML 文件并验证它们,为此我创建了 3 个参与者:控制器,处理器和验证器。Controller负责启动流程,将文件和其他信息逐个发送给Processor,然后Processor创建文件的数字签名并将响应发送给Validator,Validator最终验证状态并向Controller发送OK消息这是计算已验证文件的数量并将它们与总文件进行比较。一旦文件总数与经过验证的文件总数相等,我就使用 terminate () 方法调用来完成 ActorSystem。

完成方法如下:

循环永远不会结束,因为未来永远不会完成,我不知道这是否是正确的方式,我希望你能理解我并可以帮助我或给我一些建议。

0 投票
3 回答
776 浏览

scala - Akka Actors:询问模式与承诺

最近我发现自己在类中包装了actors,这样我就可以找回一些在处理ActorRefs 时失去的类型安全性。最后,问题是,我不仅需要发送特定消息,还需要将响应转换为预期结果。所以我认为我可以向包含的参与者发送消息,Promise以便他们最终报告结果。

这是个坏主意吗?它对我来说看起来很整洁......类型安全并且效果一样好。为什么没有人提出这个想法?有什么我没有注意到的问题吗?

询问基于模式的解决方案

基于承诺的解决方案

0 投票
0 回答
227 浏览

scala - ScalaFx 和 Akka 演员

几周前,我开始使用 Scala 编程并使用 Akka Actors。我正在尝试实现一个使用 Akka ActorSystem 来服务多个 UI 的 scala 程序。我目前正在尝试设置一个 ScalaFx 应用程序并通过内部演员将其连接到我的演员系统。因此,我编写了以下代码来设置我的演员系统和我的控制器:

然后我实现了一个简单的 ScalaFx App:

所以我基本上想做的是启动我的scala程序,然后注册akka系统并注册控制器和gui actor。注册 gui 演员后,我想启动 GUI,然后告诉 GUI 设置“Hello ScalaFx App”。串到 GUI 上。

到目前为止,它正在工作,ScalaFx GUI 启动了,但带有“正在加载...”的 GUI 的初始内容并没有被“Hello ScalaFx App”替换。细绳。有人可以告诉我我的方法是否正确,还是我做错了什么?

0 投票
1 回答
219 浏览

scala - 使用 sbt 编译 akka actor 源代码时出错

我想要 akka-actor v 2.4.17 的源代码并在我的 Windows 机器上编译。

我从下面的位置下载了源代码。 https://github.com/akka/akka/tree/v2.4.17

下载完整个源代码后,在我的机器上安装了 sbt,并在项目根目录的命令行上运行 sbt 命令。

运行时出现以下错误,请告诉我如何编译此源代码。

错误: