问题标签 [akka-remote-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.

0 投票
0 回答
183 浏览

playframework - Akka、Play、Ebean:远程处理和发送模型对象作为消息

我们正在研究一种架构,我们应该能够从 Play 发送对象!应用于一系列 Akka 远程系统。

models.*包在所有系统之间共享,但模型仅在 Play! 基于用户输入的应用程序。现在,对于密集操作,这些模型对象被传递给远程参与者进行处理。远程参与者根本不打算持久化对象,而只是根据数据对它们进行操作。

因此,例如,如果用户需要在第三方 API 上进行更新,则数据库中的对象只会发送到远程参与者;

我们正在使用EbeanPlay!。

现在的障碍是在 Akka 系统端,Ebean 抛出一个错误:

在我看来,这只是意味着由于模型类扩展Model,Ebean 期望连接到数据库。这违背了目的。

如何解决?序列化不是一种选择。

0 投票
1 回答
381 浏览

scala - HAProxy 背后的 Akka 远程处理

我试图将远程 Akka系统(我们称之为system1 )放在 HAProxy 后面,并通过代理由另一个系统(我们称之为system2 )使用它。我正在使用 Akka 2.4,它具有“绑定主机名”功能(是的,我正在使用来自快照存储库的 Akka,因为我在 Docker 中没有其他 Akka 选项)。

系统 1的配置

并为system2配置:

其中proxyServerIp是带有 HAProxy 的服务器。我已经在本地测试了配置,将proxyServerIp替换为我的本地机器 IP 地址,并且没有错误。但是当我尝试在 prod 上启动它时,我在system1上得到以下信息:

以及system2上的以下内容:

看起来消息到达了他们的目标系统,但由于某种原因没有发送给参与者。任何想法为什么?

PS 我不想将Akka Clustering与它的负载平衡一起使用,因为我已经为 HAProxy 实现了通用(针对每个暴露的 Docker 端口)服务发现,但是Akka Clustering将要求我实现另一个服务发现。

0 投票
2 回答
1758 浏览

ssl - 如何加密(使用 SSL)Akka Remoting 消息?

我分叉了这个简单的服务器-客户端 akka 项目: https ://github.com/roclas/akka-irc ,这是一个类似 IRC 的聊天,我正在尝试对消息进行编码。

在我的主分支中,如果我启动一个服务器(sbt 运行然后选择选项 2)然后一个客户端(sbt 运行然后选择选项 1),如果我在客户端中写一些东西,则消息会正确发送到服务器。

如果我启动wireshark并监听满足这些条件的消息:tcp.port==1099 and tcp.len>200

我可以阅读纯文本的消息。

我如何使用 SSL 对它们进行编码?您可以通过修改开发分支中的 src/main/resources/application.conf 文件来查看我要做什么 我需要修改什么?我的 src/main/resources/application.conf 文件应该是什么样子?

谢谢

0 投票
1 回答
528 浏览

scala - 本地和远程参与者之间的 Akka 事件

在同一演员之间使用事件总线机制ActorSystem是直截了当的,但我想知道是否有一种认可的方法可以这样做:

  • ActorSystems同一JVM中不同的Actor
  • 不同 JVM 中的参与者(通过远程处理)

假设我知道演员的路径很好,但如果也有一种常用的机制来发现这些事情,我很想听听。

0 投票
1 回答
759 浏览

apache-spark - 从远程actor向Spark actorStream发送消息时,连接总是断开

当从远程actor向spark发送消息时,心跳总是失败:

远程节点的日志:

[信息] [03/23/2015 22:13:33.591] [wtb-akka.remote.default-remote-dispatcher-6] [akka.tcp://wtb@127.0.0.1:2552/system/transports/akkaprotocolmanager .tcp0/akkaProtocol-tcp%3A%2F%2FsparkDriver%40127.0.0.1%3A7777-1] 远程无响应。握手超时或传输故障检测器已触发。

[警告] [03/23/2015 22:13:33.605] [wtb-akka.remote.default-remote-dispatcher-5] [akka.tcp://wtb@127.0.0.1:2552/system/endpointManager/reliableEndpointWriter -akka.tcp%3A%2F%2FsparkDriver%40127.0.0.1%3A7777-0] 与远程系统 [akka.tcp://sparkDriver@127.0.0.1:7777] 的关联失败,地址现在为 [5000] 毫秒. 原因是:[解除关联]。

Spark节点的日志:

23 年 3 月 15 日 22:13:33 WARN ReliableDeliverySupervisor:与远程系统 [akka.tcp://wtb@127.0.0.1:2552] 的关联失败,地址现在被门控 [5000] 毫秒。原因是:[解除关联]。

我错过了什么导致这些错误?

0 投票
1 回答
534 浏览

akka - Akka Remoting 接触点节点需要运行吗?

我是 akka 和 akka 远程处理和 akka 集群的新手。我已经使用以下配置构建了一个系统

应用程序.conf

worker.conf

不明白的是,akka 系统将在我的本地启动,并使用种子节点来形成集群。这是否意味着种子节点应该已经在运行。这意味着该进程是否应该已经在这些 ip:port 上启动?

原因是:如果没有这个过程已经在运行,我会得到关联失败,因为它是封闭的。

*******UPADTE *****

上述问题是因为使用浮动 ips。我的节点在 Openstack Vm 上运行,它们确实有一个静态 IP。使用静态 IP 解决了问题。

另一个有趣的发现。当节点启动时,remote.netty.tcp 中的主机名应该是机器 inet,正如 Ryan 提到的,其中一个种子节点需要启动集群才能启动,因此让本地机器成为种子节点会更好。如果您有分布式种子节点,则更喜欢使用 localhost inet IP 而不是 127.0.0.1。

0 投票
1 回答
180 浏览

sockets - Akka Remoting Connection

I have 2 applications say app1 and app2. On machine 1, both app1 and app2 runs but on machine 2 only app2 runs, as most of the work is done by app2. The apps use Akka.

Using akka remoting, I want to be able to pass message from app1 on machine 1 to app2 on machine 2. app1 and 2 are able to interact with each other when they are on same machines.

However when app 1 on machine 1 tries to connect with app2 on machine 2 it gets below error...

EndpointWriter - AssociationError [akka.tcp://deal-rest@127.0.0.1:4242] -> [akka.tcp://deal@:4241]: Error [Invalid address: akka.tcp://deal@:4241] [ akka.remote.InvalidAssociation: Invalid address: akka.tcp://deal@:4241 Caused by: akka.remote.transport.Transport$InvalidAssociationException: Connection refused: /:4241

When I run netstat -a | egrep 'Proto|LISTEN' on machine 2, I got below response tcp6 0 0 localhost:4241 [::]:* LISTEN

This indicates that the app2 is running and able to listen on 4241.

Also, the port 4241 is open on machine1 and 2.

Any suggestion will be helpful. Thanks.

0 投票
1 回答
742 浏览

java - 关闭远程 akka 演员连接?

是否有可能和/或有必要关闭 akka 中的远程参与者?

我可以akka.actor.ActorSystem作为“服务器”启动(在 scala 中):

然后从运行在单独 JVM 上的“客户端”ActorSystem 连接到它:

我能够发送消息remote和接收响应消息。

但是,当客户端需要关闭时,在客户端 JVM 死机后,我会看到来自服务器 ActorSystem 的以下日志消息:

[警告] [04/01/2015 11:27:27.107] [TestServer-akka.remote.default-remote-dispatcher-5] ... [akka.tcp://ConsoleSystem@localhost:1236] 失败,地址现在门控 [5000] 毫秒。原因是:[解除关联]

这些警告不好吗?remote.closeConnection我应该调用一些方法来防止警告消息吗?

先感谢您。

0 投票
0 回答
157 浏览

scala - Akka Actor on server not returning an ActorIdentity response to an Identify message

So I have this segment of code

However, when I send the identify message (which is the right path) it doesn't get an ActorIdentity, it just prints "not ready yet".

When I run the server locally everything works fine. So I'm really confused as to why the server is working as intended.

0 投票
1 回答
225 浏览

akka - 二进制兼容如何分发 akka

虽然 akka 有关于替换 jar 的二进制兼容性的文档,但我找不到任何关于协议二进制兼容性的信息。

在基本层面上,actor API 是一个消息邮箱。因此,只要消息保持二进制兼容,就有可能将消息发送到运行不同(jar 不兼容)akka 版本的其他系统。

所以给出:

  • 2 个具有固定消息集的应用程序
  • 无类型演员(仅使用actor ! messageand actor ? message
  • 使用 akka 2.3.9 的“应用程序 1”

akka“Application 2”可以使用的最早版本是什么?

我想确认的其他项目:

  • Akka 集群协议在这里无关紧要 - 每个应用程序都可以拥有自己的集群并使用TCP 远程处理在集群之间进行通信
  • Scala 二进制兼容性也无关紧要 - 系统通过 TCP 协议与一组预编译的消息进行通信(很可能在 Java 中指定用于保证/偏执狂)

一开始,2.0系列有相同的远程配置,但是1.3有什么原因不能工作吗?