问题标签 [akka]
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 - scala/akka 或 go 更适合的问题
在最近研究 Go 时,似乎可以将 Go 和 Scala/Akka 进行类比,其中 akka Actor 类似于 goroutine,ActorRef 类似于 Go 通道。
除了平台类型问题(JVM 与否)之外,还有哪些功能差异会导致人们选择其中一种?
java - 我们如何在 Java 中测试 Actor?
到目前为止,我唯一看到的是有人发布了一个测试 TypedActor 的示例。我认为没有办法通过说 Junit 来测试 UntypedActor?Akka 文档一天比一天好,但我没有看到提到的测试。这真的很明显,我只是错过了一些东西吗?
scala - Scala 中的多个 Actor 实现有何不同?
随着 Scala 2.9.0 的发布,Typesafe Stack 也发布了,它结合了 Scala 语言和 Akka 框架。现在,虽然 Scala 在其标准库中有演员,但 Akka 使用自己的实现。而且,如果我们寻找其他实现,我们还会发现 Lift 和 Scalaz 也有实现!
那么,这些实现之间有什么区别呢?
python - 将基于 python-twisted 的代码移植到 scala:需要框架建议
我正在尝试将大量用 python 编写的代码移植到 scala 中,并且我正在寻找关于选择哪种框架组合的意见。
这个东西本质上是一个 RPC(基于自定义 protobuf + xmlrpc)/HTTP 服务器和客户端,它执行一些数据库维护和转换,但后来将 rpcs 发送到此重写范围之外的工作人员。
作为实现 RPC 堆栈的网络 IO/基础,我使用的是 netty。旧事物中的所有工作流程都基于扭曲的 Deferred,为了替换它,我目前正在考虑直接使用 ChannelFuture,或者将其包装在 scalaz.Promise 或 akka.Future 中。
我想,问题的一部分是 - 它可以比手动处理回调更简单吗?我想,如果我选择这条路线,我可以稍后通过添加一些包装器和使用延续来简化它,但也许我需要从一开始就使用不同的东西?
我试图将工作流程融入演员模型中,但它似乎不适用于 stdlib 演员。
谢谢。
更新: Finagle 似乎非常接近于扭曲的模型,或者至少意外地相似。twitter.util.Future 看起来很像 twisted 的 Deferred。所以我暂时使用它。
更新 2:我首先移植它的原因是静态类型和性能。
scala - akka 如何启动一个主任务并阻止它完成?
我正在尝试在scala中开始使用akka。在主 scala 线程中,我想启动一个 akka 演员,向它发送一条消息,然后阻塞直到该演员终止。做这个的最好方式是什么?
例如,我有一个测试参与者,它只是反复向自己发送消息:
它通过以下方式调用:
该块的执行时间刚刚超过 5,000 毫秒,而不是我预期的几毫秒,因此它似乎与默认的未来超时有关 - 并且程序实际上并没有终止。我真正想做的只是计算发送 x 条消息的性能。这里发生了什么?
scala - 编写可扩展的 Web 服务服务器的最佳语言/库选择是什么?
我一直在从事一个项目,编写一个游戏传播和服务平台,这将使游戏开发者能够轻松地将游戏分发和更新外包,并提供多人/社区的某些部分,如成就、排名、朋友等。 SOAP 或 REST API 形式的 web 服务。
我不确定它在获得市场份额方面的可行性,但无论如何,应用程序应该编写成水平扩展,以便吸收任何数量的可能用户。由于该项目仍处于早期阶段,我对要使用的语言和技术有一定程度的影响。
到目前为止,我的研究已将选择范围缩小到 Erlang 或基于 JVM 的语言。
Erlang 因其专注于可扩展和容错的分布式应用程序以及经过验证的跟踪记录而广为人知,但另一方面,它的库生态系统远没有 JVM 丰富。另一方面,JVM 语言拥有一个拥有众多库的大型社区,其中许多库致力于提供分布式和可靠的服务,例如 Terracota 或 Akka(这似乎是受到 Erlang 的启发,尽管我不确定有多少它的力量接近并希望听到它)。
由于语言生产力与平台强度和可靠性同等重要,如果我要使用 JVM,我会倾向于 Scala 或 Clojure 而不是 Java。当然,如果您认为有另一种语言(JVM 或非 JVM)更适合这样的任务,我很想听听。
我不想阅读语言很酷的功能的要点列表,因为那是我可以自己搜索的内容,我宁愿对你自己编写这样一个应用程序的经验感兴趣(有点像那些博客文章的脉络 -链接) ,尽管不仅涉及原始性能,还涉及语言和库问题。
我想听听您(或您的公司)对此类项目的语言和技术选择是什么,是什么促使了这种选择,您使用所选平台的经验是什么以及最终实现了哪些。
所有的见解将不胜感激;)
jakarta-ee - Akka 是否适合在不同的 EJB 之间共享单个数据视图
我有一个集群的 JavaEE 应用程序。我想在类似 EJB 之间共享数据结构的单一视图。
我不希望 EJB 相互竞争以更新数据库,并且更愿意在内存中共享状态。
Akka 在这里有用吗?也许是交易员?
scala - scala不喜欢akka中的自变量?
我的代码出现以下错误:error: not found: value self
scala - 如果抛出异常,Akka Actor 不会终止
我目前正在尝试开始使用 Akka,但遇到了一个奇怪的问题。我的演员有以下代码:
这就是我开始我的工人的方式:
这就是我关闭一切的方式:
现在发生的情况是,如果我向工作人员发送 n > 0 的消息(不抛出异常),一切正常并且应用程序正常关闭。但是,只要我向它发送一条导致异常的消息,应用程序就不会终止,因为仍然有一个演员在运行,但我不知道它来自哪里。
如果有帮助,这是相关线程的堆栈:
PS:没有终止的线程不是任何工作线程,因为我添加了一个 postStop 回调,它们每个都正确停止。
PPS:Actors.registry.shutdownAll
解决问题,但我认为shutdownAll应该只作为最后的手段,不是吗?
scala - akka actor 中的消息传递序列
我对 Akka 很陌生,在参考手册中找不到答案。
假设我们有远程参与者分布在 3 台机器(A、B、C)的集群中,其中每台机器上都有一个参与者,而其他参与者则拥有另外 2 台参与者的 actorRef,即:
演员 A 执行以下代码:
Actor B 在消息处理程序中执行以下代码:
Actor C 在消息处理程序中执行以下代码:
我可以做出以下假设(如果有的话):
演员 B 在得到 msg2 之前得到 msg1
演员 A 在得到 msg4 之前得到 msg5
以及可能导致理解上述内容的后续问题:消息是由!运营商通过网络真正异步还是等到接收邮箱得到它?即行
阻塞,直到演员 B 在其邮箱中收到消息,或者它是否产生处理传递并继续执行的线程
甚至在它知道演员 B 得到 msg1 之前?