问题标签 [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.
playframework - Akka、Play、Ebean:远程处理和发送模型对象作为消息
我们正在研究一种架构,我们应该能够从 Play 发送对象!应用于一系列 Akka 远程系统。
该models.*
包在所有系统之间共享,但模型仅在 Play! 基于用户输入的应用程序。现在,对于密集操作,这些模型对象被传递给远程参与者进行处理。远程参与者根本不打算持久化对象,而只是根据数据对它们进行操作。
因此,例如,如果用户需要在第三方 API 上进行更新,则数据库中的对象只会发送到远程参与者;
我们正在使用Ebean
Play!。
现在的障碍是在 Akka 系统端,Ebean 抛出一个错误:
在我看来,这只是意味着由于模型类扩展Model
,Ebean 期望连接到数据库。这违背了目的。
如何解决?序列化不是一种选择。
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将要求我实现另一个服务发现。
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 文件应该是什么样子?
谢谢
scala - 本地和远程参与者之间的 Akka 事件
在同一演员之间使用事件总线机制ActorSystem
是直截了当的,但我想知道是否有一种认可的方法可以这样做:
ActorSystems
同一JVM中不同的Actor- 不同 JVM 中的参与者(通过远程处理)
假设我知道演员的路径很好,但如果也有一种常用的机制来发现这些事情,我很想听听。
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] 毫秒。原因是:[解除关联]。
我错过了什么导致这些错误?
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。
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.
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
我应该调用一些方法来防止警告消息吗?
先感谢您。
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.
akka - 二进制兼容如何分发 akka
虽然 akka 有关于替换 jar 的二进制兼容性的文档,但我找不到任何关于协议二进制兼容性的信息。
在基本层面上,actor API 是一个消息邮箱。因此,只要消息保持二进制兼容,就有可能将消息发送到运行不同(jar 不兼容)akka 版本的其他系统。
所以给出:
- 2 个具有固定消息集的应用程序
- 无类型演员(仅使用
actor ! message
andactor ? message
) - 使用 akka 2.3.9 的“应用程序 1”
akka“Application 2”可以使用的最早版本是什么?
我想确认的其他项目:
- Akka 集群协议在这里无关紧要 - 每个应用程序都可以拥有自己的集群并使用TCP 远程处理在集群之间进行通信
- Scala 二进制兼容性也无关紧要 - 系统通过 TCP 协议与一组预编译的消息进行通信(很可能在 Java 中指定用于保证/偏执狂)
一开始,2.0系列有相同的远程配置,但是1.3有什么原因不能工作吗?