问题标签 [remote-actors]

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 回答
1981 浏览

scala - 有没有办法获取远程参与者的 IP 地址?

我想知道是否有办法获取远程 akka 演员的 ip 地址,因为目前我正在使用广播 ip 地址来设置演员系统(这是唯一一个似乎有效的方法)。我目前能够看到演员路径,但我想确切地知道它所在的机器,因为广播 ip 是用于网络的。

这是我的一些主要演员的代码:

这是主定义:

这是我初始化和敲击演员的地方:

0 投票
1 回答
344 浏览

scala - 同一台机器上的 Scala 远程演员

我是 scala 的新手,正在尝试使用 Actor 模型。我已经在同一台机器上使用演员。现在,我想使用远程演员更进一步。由于我只有一个盒子可以玩,我计划启动一个 scala 进程,它将充当远程演员

remote.scala 看起来像

将使用这个远程actor的主程序

演员.scala

问题是当我使用 eclipse 运行 remote.scala 时(通过为 eclipse 安装 scala 插件)我得到了

你好

启动远程 Actor

在 Eclipse 控制台中打印的消息。但是当我在安装 scala 后从 Windows 命令行运行相同的程序时。

C:\Program Files (x86)\scala\bin>scala remote.scala

那么消息不会被打印出来。但是,如果我将 remote.scala 文件更改为仅包含 hello world 消息,(即 remote.scala 看起来像)

然后 Hello 消息会打印在 Windows 命令提示符上。为什么 Windows 命令提示符在原始 remote.scala 的情况下不打印消息?

我想要的是启动这个 scala 进程,在该进程中注册了远程参与者并且该进程仍然存在。然后我想从另一个命令提示符启动 main.scala 程序,以便它向远程参与者发送消息以执行计算。如何确保远程参与者仍然存在并已注册并且进程正在运行?

0 投票
1 回答
6526 浏览

scala - 无法绑定到 Akka Actor 系统的远程 IP 地址

我在初始化远程 IP 地址上的参与者系统时遇到了麻烦。我正在使用 akka 演员和戏剧!框架。代码和远程参与者系统都在远程机架空间服务器上。当我尝试在另一台服务器上创建远程参与者系统时,它无法绑定到该 IP 地址。我认为这不是网络或防火墙问题,因为 Rackspace 说他们打开了服务器之间的所有连接。这是我收到的错误消息:

我在这里创建远程演员系统:

这是我在 Application.conf 文件中定义远程创建的地方:

这是我在定义中包含的 common.conf 文件:

0 投票
1 回答
574 浏览

scala - Scala akka ActorFor 路径

这是我在远程系统上查找演员的代码:

我想我指定了错误的路径。

这个对吗:

/家/路易斯/斯卡拉/

是播放的位置!远程服务器上的项目。然后“remoteActor”是演员的名字。

但它永远不会返回 ActorRef 对象,它始终为空。

0 投票
2 回答
4783 浏览

scala - 当收到特定消息时,我们从哪里获得发送者演员?

每当一个actor在scala中接收到消息时,我们可以通过使用关键字'sender'来访问actor的发送者,它是一个特征AbstractActor的对象。

我的问题是,每当收到消息时,如何才能访问此“发件人”。?

而且,我们是否可以覆盖这个实现,与发送者一起,其他一些数据也可以访问,例如 ipaddress,数据来自的端口。

据我所知,您无法从消息的来源处获取 IP 地址和端口。有什么方法可以从这个“发件人”对象中获取发件人的 IP 地址和端口号?

谢谢您的帮助。

0 投票
2 回答
248 浏览

scala - 我们如何覆盖 scala actor 的 react 构造?

检测 scala actor 中接收到的消息类型的常用方法是

但是,我想知道我们如何覆盖这个 react 构造的实现,以便我们可以对收到的消息进行隐式记录。

我正在尝试实现下面提到的用例-> 1。在消息与任何案例类匹配之前,我想在控制台/文件上编写一条日志语句,显示消息的出现。2. 我们可以通过 println() / log4j logging 显式记录这些消息。但是,我想为 scala 演员设计一个通用记录器,它将记录所有发送或接收的消息。

在这方面的任何帮助都会有所帮助。提前致谢

0 投票
0 回答
304 浏览

scala - 简单的远程参与者/服务器:本地客户端不会停止

开始使用 scala 并且非常喜欢这种语言,但我似乎很难理解演员是如何工作的。我以前使用 NIO 做了很多远程工作,但现在我想尝试 scala 的远程演员。

我正在尝试创建一个非常简单的服务器和客户端(参见下面的代码)。

  1. 服务器已启动
  2. 制作了一个远程演员代理(按照这个例子:http ://www.scala-lang.org/docu/files/actors-api/actors_api_guide_6.html )
  3. 我通过代理向服务器发送一条消息,它通过了
  4. 我想关闭我的应用程序......但是怎么做!?:)。它永远持续下去

代码:

输出是:

但它会一直持续下去。。

更新

对不起!重复,第三次搜索找到答案: 向演员发送来自非演员的消息是不好的做法吗?

0 投票
2 回答
620 浏览

akka - Akka 2.1 Remote:跨系统共享actor

我正在学习 Akka 2.1 中的远程参与者,并尝试修改Typesafe 提供的反例。我从控制台实现了一个快速'n'dirty UI 来发送滴答声。并退出询问(并显示结果)当前计数。

这个想法是启动一个将运行 Counter actor 的主节点和一些将通过远程处理向其发送消息的客户端节点。但是,我想通过配置和对代码的最小更改来实现这一点。因此,通过更改配置,可以使用本地演员。

我发现这个关于类似问题的博客条目,即使有许多实例正在运行,所有 API 调用都必须通过一个参与者。

我写了类似的配置,但我无法让它工作。我当前的代码确实使用了远程处理,但它在主节点上为每个新节点创建了一个新的参与者,如果没有明确地给它路径(并且无视配置点),我无法让它连接到现有参与者。然而,这不是我想要的,因为状态不能以这种方式在 JVM 之间共享。

可通过 git repo获得完整的可运行代码

这是我的配置文件

和完整的来源

我用sbt run和在另一个窗口sbt run -Dakka.remote.netty.port=0中运行它。

0 投票
4 回答
9917 浏览

scala - Akka 2.1 最小远程actor示例

编辑通知,我需要对此https://github.com/akka/akka/commit/ce014ece3568938b2036c4ccfd21b92faba69607#L13L6进行反向更改,以使接受的答案与 AKKA 2.1 一起工作,这是在 akkas 主页上找到的稳定分布!


我已经阅读了我可以在 AKKA 上找到的所有教程,但没有发现任何“开箱即用”的作品。

使用 eclipse,我想创建 2 个程序。

Program1:启动演员“joe”并以某种方式使其在 127.0.0.1:some_port 上可用

Program2:在 127.0.0.1:some_port 获得对演员“joe”的引用。向“joe”发送问候消息。

程序 1 应该在收到消息时打印一些东西。我想使用 AKKA 2.1 在 Eclipse 中运行这个示例。有人可以列出 2 个程序(程序 1 和程序 2)以及执行此操作的工作 application.conf 文件吗?


编辑> 让我告诉你我到目前为止得到了什么:

演员

程序1

程序2

应用程序.conf

但是,当我仅启动 Program2 并输出时,该程序有效:

似乎它没有接收我的 application.conf。我尝试将它放在我的 Eclipse 项目的 ./src/ 和 ./ 文件夹中。没有不同。另外,我知道这确实是降级部署,但我只需要一个 hello world 程序即可使用 AKKA。我在这方面花了很多时间,却没有得到一个简单的工作应用程序。

0 投票
3 回答
1368 浏览

events - 等待 akka actor 系统可用

我将 AKKA 2.1 与 Scala 2.10 一起使用。

我需要多台机器来启动演员系统并实例化一些演员。在此之后,每个系统都需要访问所有其他系统并使用“actorFor(...)”收集对其参与者的引用。

但是,我需要一种方法让参与者系统在连接之前等待其他系统启动,否则我会出错。

如果参与者系统 A 在 B 离线时连接到 B,我的程序将失败。但是,如果 A 连接到 B 并在 B 上存在远程 Actor 引用之前获得它,则一旦 B 实际实例化该 Actor,程序就会继续正常运行。

简而言之,在尝试连接到 B 之前,我需要以某种方式等待 B 的创建事件。在 Scala+AKKA 中有没有好的方法来做到这一点?