问题标签 [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.
scala - 检查akka集群中是否存在actor
我遇到了一个场景,我需要检查特定演员是否存在,这可以通过 ActorSystem.actorSelection 方法通过指定演员路径来完成。
但是,当您的本地节点上存在此类参与者时,此方法可以正常工作。如果actor-system由多个节点组成,并且actor存在于另一个节点上,则该方法告诉actor不存在。如果我给出指定远程演员系统的字符串,那么此方法有效。但是,在 actorSelection 方法中指定远程 actor-system 字符串似乎不是一个好主意,因为集群中的节点可以加入和离开。
当演员存在于本地节点上时,上面的代码工作正常,为了检查演员是否存在于集群中的另一个节点上,我必须执行以下操作:
有没有更好的方法来检查整个akka-cluster中是否存在actor而不仅仅是本地节点?
scala - 重试长寿 akka 演员的小例外
我有一个在应用程序启动时作为另一个actor的子级创建的actor,并且每天从父级接收一条消息,以执行从某个SFTP服务器获取一些文件的操作。
现在,可能有一些小的临时连接异常会导致操作失败。在这种情况下,需要重试。
但是可能会抛出异常并且在重试时不会解决(例如:找不到文件,某些配置不正确等)
因此,在这种情况下,考虑到参与者将在很长一段时间后(每天一次)接收消息,什么可能是适当的重试机制和监督策略。
在这种情况下,发送给actor的消息不是错误的输入——它只是一个触发器。例子:
如果我在父母中有这样的监督策略,它将在每个次要/主要异常上重新启动失败的孩子而不重试。
我想要的是这样的:
scala - 为什么我不能在akka集群分发数据示例中使用大写作为var的第一个字符
我正在尝试https://doc.akka.io/docs/akka/current/distributed-data.html#using-the-replicator上的官方示例
(此页面上的第一个 scala 示例)
但是当我更改时它似乎很奇怪我的代码一点点。
我录制了一个视频我在代码中所做的更改。我所做的唯一更改是第 16 行的变量名称。从 DataKey 到 dataKey。我只是重命名了它。 https://photos.app.goo.gl/CZrnNZlW85e9MaF73
现在的问题是它为什么会发生。
在这个例子中,我不能使用大写作为 var 的第一个字符???
请帮我弄清楚。非常感谢。
Akka 版本:2.5.9
Scala 版本:2.11.12
IDE:IntelliJ IDEA 2017.3.3 社区版
scala - 如何在有服务的 Akka 演员中使用 http 客户端?
我有一个 akka 演员,我想在该演员中使用一个简单的服务。该服务应使用客户端 api 的singleRequest 方法从本地网络获取某些内容。
我的演员:
在这里,我还创建了一个 ActorSystem 和一个 ExecutionContext,以便我的服务可以使用它:
如果我没有将 executionContext 传递到服务中,我会收到错误消息:
如果我没有将 actorsystem 传递到服务中,我会收到错误消息:
问题:
- Actor 应该如何正确使用服务?
- 传递 ActorSystem 和 ExecutionContext 是否正确,为什么它不会在幕后发生?
scala - 如何在scala中使用同步
我正在创建一个演员,我想第一次创建它,然后在需要该演员时使用它的演员参考。这是代码
Q1->这是实现我想要的功能的正确方法吗?我遇到的问题是,无论何时在两个地方同时调用此代码。
它抛出两个不同的异常:
和:
我尝试使用this.synchronized
但没有帮助,当我多次调用此方法时出现问题
如何创建一次actor并一次又一次地使用它的actorRef而不再次创建它?
scala - 如何将参数传递给 Scala 对象
我只想创建一次演员并一次又一次地在应用程序中使用它的引用。为此,我创建了一个 Scala 对象,一切正常,但是当我尝试使用子演员时,我得到了NullPointerException
. 这是代码:
当我想实例化一个子actor时会出现问题。这是代码:
实例化时ParentTestActor
抛出
请帮助我如何解决这个问题。
java - 错误 - ReceiveBuilder 处的构建方法编译错误,类型 scala.Product 无法解析
我是 Akka-Actor 的新手。
尝试运行简单的 akka-actor 程序来理解 akka-actor。
我无法解决两个编译错误。
和
下面是实际代码。
AkkaActor 计划:
AkkaActor 版本 2.4.9。
在我的 pom.xml 设置下方。
scala - akka tcp server-client heartbeat message block by scheduler 处理
我正在使用 Akka 集群(服务器)并每 5 秒使用 Akka TCP 与客户端交换 HeartBeat 消息。
HeartBeat 工作正常,直到我不使用调度程序。但是当我启动 4-5 个调度程序时,服务器没有从客户端(tcp 连接)接收到心跳缓冲区消息。调度程序处理后,我同时收到 4-5 条心跳消息。
Akka 调度程序正在阻止 Actor 的其他处理(缓冲区读取等)。
我已经在下面尝试过,但仍然面临同样的问题。
- 不同的 2 调度程序
- 创建了新的演员并在单独的演员中添加了调度程序调用。
- 使用8核机
- 试过
fork-join-executor
了thread-pool-executor
- 已经尝试更改
Tcp-SO-ReceivedBufferSize
为Tcp-SO-SendBufferSize
1024 或 2048,但没有成功。 - 已经尝试过
Tcp-SO-TcpNoDelay
请帮忙。
scala - Scala 流式传输实时/正在增长的文件
我的 Scala 应用程序启动了一个将文件写入磁盘的外部进程。在一个单独的线程中,我想读取该文件并将其内容复制到一个,OutputStream
直到该过程完成并且文件不再增长。
有几个边缘情况需要考虑:
- 当线程准备好启动时,该文件可能还不存在。
- 线程的复制速度可能比进程写入的速度快。换句话说,它可能会在文件仍在增长时到达文件末尾。
顺便说一句,我可以向线程传递一个processCompletionFuture
变量,该变量指示文件何时完成增长。
有没有一种优雅而有效的方法来做到这一点?也许使用 Akka Streams 或演员?(我已经尝试使用 Akka Stream 关闭FileInputStream
,但是一旦输入流中没有更多字节,流似乎就终止了,这种情况发生在 #2 的情况下)。
java - 如何有意义地记录演员设计
我对 akka/actor 系统很陌生,并尝试理解同事编写的代码。
这样做,我问自己什么样的文档有助于更快地理解实施的“演员系统”。
据我所知,您需要至少了解系统的两个不同视角才能理解它。
- 首先是静态的“创作层次”,主要定义演员之间的父子关系。
- 第二个是动态的“消息/事件流”,主要定义参与者之间交换的消息。作为一种特殊情况,它还包括已实现的有限状态机。
所以,我想知道是否有关于如何记录参与者系统的常见最佳实践:
- 应该记录什么样的观点?
- 是否有关于如何构建代码的推荐方法(例如将父子关系反映为包结构)?
- 命名约定?
- 能够解析代码并提供一些文档的工具?
- ...