问题标签 [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 无法实例化伴随对象?
我是 Scala 和 Akka 的新手,所以如果这是一个新手问题,请原谅我,但我在其他任何地方都找不到答案......
作为记录,我使用的是 Scala 2.9.0-1 和 Akka 1.1.3,并且还包括了我的 SBT 0.10.1 设置。
我已经在 Akka 中编写了此消息后面的代码作为实验;它是用户数据库和注册工具的玩具版本。基本思想是有一个由 UserServer 演员组成的 ActorPool,每个演员都有一个 MemoryUserDatabase 的实例,该实例使用 STM 与用户的电子邮件地址的用户地图进行交互——很简单,对吧?
可以通过编译文件并在两个单独的控制台中运行以下命令来重现该问题:
控制台#1:
导入 toy.service.user._; ServiceRunner.run
控制台#2:
导入 toy.service.user._; ClientRunner.run
这是服务器控制台的输出 (#1)
使用 Scala 2.9.1.final 时,该错误会稍微有趣一些:
代码的这个操作部分是:
我不明白为什么无法初始化伴随对象。最奇怪的部分是你可以做同样的事情,但是如果在服务器控制台(#1)中你首先访问 Companion 对象:
内存用户数据库
在您运行 ServerRunner 之前,它初始化得很好,随后其他一切都只是花花公子。
谁能解释这是为什么?
谢谢!伊丹
PS。这是我的第一个 Scala 代码,所以尽量不要笑得太厉害......欢迎任何其他建议(风格、哲学、神学......)。
scala - akka:共享可变状态
我需要一个很少更改的全局变量(单例)。实际上它只有在actor重新启动时才会改变,并重新初始化变量。由于我不能在伴生对象中使用单例 val 来执行此操作,因此我必须将其声明为 var(可变)。
我阅读的许多指导方针总是反对共享可变状态。所以我将变量移动到类并使用消息传递来检索变量。
问题是,dbConnection 被许多..许多参与者非常频繁地访问,并且不断发送消息会降低性能(因为 akka 进程邮箱一个接一个)。
我不知道如何在不牺牲性能的情况下做到这一点。任何想法?
java - 如何理解 AKKA 中使用的这种 CCAS 锁定机制?
我刚刚在akka中遇到了一段代码。
下面列出了我感兴趣的核心方法。
有两个相关的子问题。
1)这个类SimpleLock的目的是什么
2)关于它如何工作的任何提示或背景知识?
我认为由于这段代码是用 JAVA 和 scala 编写的,因此它利用了 AtomicBoolean 类。所以我也会添加java标签。
欢迎任何建议!不知道为什么有人投票关闭这个问题。
有关的:
akka - 何时使用本地与远程演员?
我应该什么时候在 Akka 中使用 Actors 与 Remote Actors?
我知道两者都可以扩大机器,但只有远程演员可以扩大,那么普通演员有什么实际的生产用途吗?
如果远程 Actor 仅具有较小的初始设置开销,并且与普通 Actor 相比没有任何其他主要开销,那么我认为使用远程 Actor 将是标准,因为它可以轻松扩展和扩展。即使永远不需要扩展生产代码,也可以选择(如果它不附带包袱)。
任何关于何时使用 Actor 与 Remote Actor 的见解将不胜感激。
web-services - Scala/Java 中的 Web 请求中的并行化/线程?
我有一个 Web 服务,它正在执行许多数据库查询(对 MongoDB),然后对这些数据库查询返回的记录进行大量处理。每个 Web 请求需要运行大约 15-45 个这样的请求,这导致不可接受的页面响应时间,因为每个查询 + 处理大约需要 20 毫秒。缓存将不起作用,因为缓存未命中率很高,并且数据需要尽可能新鲜。
我曾计划使用 Scala + Akka 和 actor 来并行化执行和处理查询的类,但我知道不鼓励在 servlet 容器内创建线程。在 Scala 中的 Web 请求中进行线程/并行化的推荐方法是什么?
scala - Spray框架生产准备好了吗?
Spray 框架 (spray.cc) 似乎是一种使用 Scala 和 Akka 构建 REST 服务的有趣且高效的方式。我来自 Java + Spring 学校,那里的一切都有很好的文档记录、成熟并且有良好的社区支持。
虽然 Spray 玩起来很有趣,但它有其粗糙的边缘。我对在实际应用程序中使用它持怀疑态度。
有人在生产环境中使用过Spray吗?围绕 Spray 的开源社区怎么样?是否可以轻松获得帮助?
更新: Spray 与 BlueEyes (https://github.com/jdegoes/blueeyes) 相比如何?
scala - 如何从标准输入获取演员消息?
我想知道是否有可能(以及如何)让 akka 演员从标准输入接收消息。本质上,这个想法是将每一行输入作为消息发送给参与者,例如
然后让演员接收消息“DO X”、“DO Y”等。
有没有标准的解决方案来做到这一点?
我想一种方法是这样做:
但是后来我有两个演员(或一个基于演员的任务和一个演员),我会使用阻塞 IO(顺便说一句,演员安全吗?)......而且,它更难控制生成块(例如杀死任务)。
添加了 OP 的进一步跟进
我有几个跟进,如果你允许我...
使用此解决方案是否会影响性能(即确实
CamelServiceManager
启动了很多事情?HTTP 服务器等)?有适合初学者的好教程吗?我从官方的 Akka 文档开始阅读Camel,但它似乎假设我对 Camel 的了解比我目前拥有的更多。例如,我不知道如何使用自定义
java.io.InputStream
asendpointUri
。
actor - 热交换 Akka Actor 的用例
Akka 1.1.3 文档指出“[t]hebecome
方法对许多不同的事情都很有用,但它的一个特别好的例子是它用于实现有限状态机 (FSM) 的示例。” 在运行时热交换 Akka Actor 的实现还有哪些其他用例?
特征中的actorClass
方法已被弃用,并带有以下消息:“将被删除而不替换,面对andActorRef
没有任何意义。” 有人可以解释一下吗?become
unbecome
akka - 如何取消 Akka 演员?
我有一个接收请求并回复它的 akka 演员(工人)。请求处理可能需要 3-60 分钟。来电者(也是演员)目前正在使用!!!并等待future.get,但是如果需要,可以更改调用者角色的设计。另外,我目前正在使用 EventDriven 调度程序。
我如何取消(用户发起)请求处理,以便释放工作角色并返回就绪状态以接收新请求?我希望有一种类似于 java.util.concurrent.Future 的取消方法的方法,但在 Akka 1.1.3 中找不到
编辑:
我们试图通过以下方式获得我们正在寻找的行为completeWithException
:
但这并没有停止长期运行的过程。
相比之下,考虑 java.util.concurrent.Future 的行为:
哪个确实停止了长时间运行的过程
scala - 我在哪里可以找到 akka.cloud 包?
有人可以指出包含 akka.cloud.cluster 包的 Akka 版本吗?我目前正在使用 Akka 1.2-RC6。谷歌搜索此主题导致有关 Cloudy Akka 的链接断开...