问题标签 [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.
scala - 有没有办法获取远程参与者的 IP 地址?
我想知道是否有办法获取远程 akka 演员的 ip 地址,因为目前我正在使用广播 ip 地址来设置演员系统(这是唯一一个似乎有效的方法)。我目前能够看到演员路径,但我想确切地知道它所在的机器,因为广播 ip 是用于网络的。
这是我的一些主要演员的代码:
这是主定义:
这是我初始化和敲击演员的地方:
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 程序,以便它向远程参与者发送消息以执行计算。如何确保远程参与者仍然存在并已注册并且进程正在运行?
scala - 无法绑定到 Akka Actor 系统的远程 IP 地址
我在初始化远程 IP 地址上的参与者系统时遇到了麻烦。我正在使用 akka 演员和戏剧!框架。代码和远程参与者系统都在远程机架空间服务器上。当我尝试在另一台服务器上创建远程参与者系统时,它无法绑定到该 IP 地址。我认为这不是网络或防火墙问题,因为 Rackspace 说他们打开了服务器之间的所有连接。这是我收到的错误消息:
我在这里创建远程演员系统:
这是我在 Application.conf 文件中定义远程创建的地方:
这是我在定义中包含的 common.conf 文件:
scala - Scala akka ActorFor 路径
这是我在远程系统上查找演员的代码:
我想我指定了错误的路径。
这个对吗:
/家/路易斯/斯卡拉/
是播放的位置!远程服务器上的项目。然后“remoteActor”是演员的名字。
但它永远不会返回 ActorRef 对象,它始终为空。
scala - 当收到特定消息时,我们从哪里获得发送者演员?
每当一个actor在scala中接收到消息时,我们可以通过使用关键字'sender'来访问actor的发送者,它是一个特征AbstractActor的对象。
我的问题是,每当收到消息时,如何才能访问此“发件人”。?
而且,我们是否可以覆盖这个实现,与发送者一起,其他一些数据也可以访问,例如 ipaddress,数据来自的端口。
据我所知,您无法从消息的来源处获取 IP 地址和端口。有什么方法可以从这个“发件人”对象中获取发件人的 IP 地址和端口号?
谢谢您的帮助。
scala - 我们如何覆盖 scala actor 的 react 构造?
检测 scala actor 中接收到的消息类型的常用方法是
但是,我想知道我们如何覆盖这个 react 构造的实现,以便我们可以对收到的消息进行隐式记录。
我正在尝试实现下面提到的用例-> 1。在消息与任何案例类匹配之前,我想在控制台/文件上编写一条日志语句,显示消息的出现。2. 我们可以通过 println() / log4j logging 显式记录这些消息。但是,我想为 scala 演员设计一个通用记录器,它将记录所有发送或接收的消息。
在这方面的任何帮助都会有所帮助。提前致谢
scala - 简单的远程参与者/服务器:本地客户端不会停止
开始使用 scala 并且非常喜欢这种语言,但我似乎很难理解演员是如何工作的。我以前使用 NIO 做了很多远程工作,但现在我想尝试 scala 的远程演员。
我正在尝试创建一个非常简单的服务器和客户端(参见下面的代码)。
- 服务器已启动
- 制作了一个远程演员代理(按照这个例子:http ://www.scala-lang.org/docu/files/actors-api/actors_api_guide_6.html )
- 我通过代理向服务器发送一条消息,它通过了
- 我想关闭我的应用程序......但是怎么做!?:)。它永远持续下去
代码:
输出是:
但它会一直持续下去。。
更新
对不起!重复,第三次搜索找到答案: 向演员发送来自非演员的消息是不好的做法吗?
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
中运行它。
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。我在这方面花了很多时间,却没有得到一个简单的工作应用程序。
events - 等待 akka actor 系统可用
我将 AKKA 2.1 与 Scala 2.10 一起使用。
我需要多台机器来启动演员系统并实例化一些演员。在此之后,每个系统都需要访问所有其他系统并使用“actorFor(...)”收集对其参与者的引用。
但是,我需要一种方法让参与者系统在连接之前等待其他系统启动,否则我会出错。
如果参与者系统 A 在 B 离线时连接到 B,我的程序将失败。但是,如果 A 连接到 B 并在 B 上存在远程 Actor 引用之前获得它,则一旦 B 实际实例化该 Actor,程序就会继续正常运行。
简而言之,在尝试连接到 B 之前,我需要以某种方式等待 B 的创建事件。在 Scala+AKKA 中有没有好的方法来做到这一点?