问题标签 [akka-remoting]
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.
serialization - “最大允许大小 128000 字节,编码类 scala 的实际大小”akka 远程处理中的错误
我想使用 Akka Remoting 在演员之间通过网络交换消息,但是对于大字符串消息,我收到以下错误:
我该如何解决这个限制?
scala - 如何在 Play 中使用 GuiceApplicationBuilder 更改 akka 远程配置?
我没有设法在我的 Play 测试中更改 akka remote 的配置!斯卡拉应用程序。
在我的application.conf
文件中,我像这样设置了akka远程端口,并且效果很好:
在我的集成测试中,我运行一个fakeApplication
,并像这样覆盖配置:
数据库配置得到了很好的考虑(我敢肯定)。
但是最后一行 ( "akka.remote.netty.tcp.port" -> 0
) 没有被考虑在内,我得到 aBindException
因为地址已经在使用中。(如果我直接在我的application.conf
文件中更改它,一切正常,但我希望能够选择端口而不是设置端口 0。)
为了在我的测试中更改此配置,我该怎么做?
akka - IIS回收AppPool后节点有时不加入Akka.Net集群
我们为短信、电子邮件和推送通知创建了一个 Akka 集群基础设施。系统中存在三种不同类型的节点,分别是客户端、发送者和灯塔。Web 应用程序和 API 应用程序正在使用客户端角色(Web 和 API 托管在 IIS 上)。Lighthouse 和 Sender 角色作为 Windows 服务托管。考虑到 Web 应用程序和 API 应用程序 AppPools 因 IIS 被回收,在 global.asax.cs 的 Start 和 Stop 事件中,我们关闭了 Client 角色中的 Actor 系统并重新启动。我们可以通过日志观察到系统成功关闭并加入集群。
但有时,当 AppPool 回收时,客户端 ActorSystem 启动但无法加入集群,我们的 Notification 停止工作(这对我们来说是个大问题)。当我们手动关闭 ActorSystem 并手动使其再次工作时,它会加入集群。这种情况大约每两天发生一次。
我们可以观察到Client在Error之前加入了Cluster;
节点 [akka.tcp://NotificationSystem@ 。. . :41350] 正在加入,角色 [client]
领导者正在移动节点 [akka.tcp://NotificationSystem@ 。. . :41350] 到 [向上]
通过查看日志,我们可以看到客户端加入集群后出现以下错误;
关闭地址:akka.tcp://NotificationSystem@ 。. . :41350Akka.Remote.ShutDownAssociation:关闭地址:akka.tcp://NotificationSystem@ 。. .:41350 ---> Akka.Remote.Transport.InvalidAssociationException:远程系统终止关联,因为它正在关闭。--- 内部异常堆栈跟踪结束 --- 在 Akka.Remote.EndpointWriter.b__20_0(Exception ex) 在 Akka.Remote.EndpointWriter.PublishAndThrow(Exception reason, LogLevel level) 在 Akka.Actor.LocalOnlyDecider.Decide(Exception cause ) at Akka.Actor.OneForOneStrategy.Handle(IActorRef child, Exception x) at Akka.Actor.SupervisorStrategy.HandleFailure(ActorCell actorCell, 异常原因, ChildRestartStats failedChildStats, IReadOnlyCollection1 allChildren) at Akka.Actor.ActorCell.HandleFailed(Failed f) at Akka.Actor.ActorCell.SystemInvoke(信封信封)---堆栈跟踪从先前抛出异常的位置结束---在 Akka.Actor 的 Akka.Actor.ActorCell.HandleFailed(Failed f)。. . .:41350 ---> Akka.Remote.Transport.InvalidAssociationException:远程系统终止了关联,因为它正在关闭。--- 内部异常堆栈跟踪结束 --- 在 Akka.Remote.EndpointWriter.b__20_0(Exception ex) 在 Akka.Remote.EndpointWriter.PublishAndThrow(Exception reason, LogLevel level) 在 Akka.Actor.LocalOnlyDecider.Decide(Exception cause ) 在 Akka.Actor.OneForOneStrategy.Handle(IActorRef child, Exception x) 在 Akka.Actor.SupervisorStrategy.HandleFailure(ActorCell actorCell, 异常原因, ChildRestartStats failedChildStats, IReadOnlyCollection`1 allChildren) 在 Akka.Actor.ActorCell.HandleFailed(Failed f )在 Akka.Actor.ActorCell.SystemInvoke(信封信封)---从先前抛出异常的位置结束堆栈跟踪---在 Akka.Actor 的 Akka.Actor.ActorCell.HandleFailed(Failed f)。
错误后,我们看到以下错误消息;
与 [akka.tcp://NotificationSystem@ 的关联。. . :41350] 具有 UID [226948907] 的失败是不可恢复的。UID 现在已被隔离,所有发往此 UID 的邮件都将被发送到死信。必须重新启动远程 actorsystem 才能从这种情况中恢复。
如果不重新启动客户端参与者,系统不会自行纠正。
我们的客户角色配置是;
我们的发件人角色配置是;
我们如何解决这个问题?谢谢你。
java - java akka默认序列化程序警告
我不想禁用警告消息,因为我想知道如何实现定义序列化程序以提高性能的建议?
akka.net - Akka.Remoting 中的非关联异常
使用 Akka.net 我正在尝试实现简单的场景。我创建了 2 个服务器和 1 个客户端,其中服务器接收客户端发送的消息并对其进行处理。
安装程序有时工作正常,有时会出现以下错误,我无法找出原因:
**
**
客户端配置:
服务器配置:
我也使用 Newtonsoft.Json 进行序列化,如下所示:
akka-remoting - akka 远程演员 - 发送者和接收者演员是否必须在同一个项目中?
我正在关注 akka-in-action 代码库远程处理(https://github.com/RayRoestenburg/akka-in-action/tree/master/chapter-remoting)。在示例中,它解释了使用发送方actor和接收方actor进行远程处理。两个参与者都是单独启动的(通过单独的 Main),并且他们能够按照解释进行通信(注意:两个参与者都是同一代码库的一部分)。
如果发送方参与者是不同项目(独立代码库)的一部分,我想看看它的行为。我创建了一个 Play 网络应用程序,它在通过一些休息客户端(我使用 Postman)获得 POST 调用时向上述接收者参与者发送一条消息。
我观察到的是,即使发送的消息(案例类)在发送方和接收方代码库中都可用,接收方仍会抱怨找不到类错误(它无法理解我从发送方发送的案例类对象)
如果远程处理必须工作,分布式参与者应该共享相同的代码库,这是一种预期的行为吗?
java - 在 Java 和 sbt 依赖项中编程 Akka
我正在学习 Akka 并正在尝试 Akka 远程处理。我正在使用 intellij IDE,并且使用的语言是 Java。我尝试运行 AKKA 远程示例(计算器)。我没有使用 sbt 工具。如何构建应用程序并运行它。我尝试运行该示例,但我认为它没有正确读取配置文件并且没有创建远程参与者。我已经在项目中包含了 akka jar 文件。我在 intellij 中创建了一个简单的 java 项目来运行该程序。
我做对了吗?构建和运行相同的替代方法是什么。如何在 Java 中使用 sbt。
akka - Akka 远程参与者系统超时:“远程系统已隔离此系统”
我有 3 个基于远程处理(非集群)的akka 节点(akka 2.4.8 演员系统)。当创建远程参与者并执行长时间任务(需要超过 30 分钟)时,我会从远程参与者系统(在远程机器上)收到错误:远程系统已隔离此系统:
来自本地系统: 2016-08-11 03:29:12.748UTC WARN [PLM-akka.actor.default-dispatcher-27] RemoteWatcher | akka.tcp://PLM@flowsvr02:46407/system/remote-watcher | 检测到无法访问:[akka.tcp://AS1@lxsvr01g:9500] 2016-08-11 03:29:12.787UTC WARN [PLM-akka.actor.default-dispatcher-14] 远程处理 | akka.remote.Remoting | 与具有 UID [1284261532] 的 [akka.tcp://AS1@lxsvr01g:9500] 的关联不可恢复地失败。UID 现在已被隔离,所有发往此 UID 的邮件都将被发送到死信。必须重新启动远程 actorsystem 才能从这种情况中恢复。
从远程系统: 00:41:05.169UTC 警告 [AS2-akka.actor.default-dispatcher-5] eliableDeliverySupervisor | eEndpointWriter-akka.tcp%3A%2F%2FPLM%40flowsvr02%3A36210-0 | 与远程系统 [akka.tcp://PLM@flowsvr02:36210] 的关联失败,地址现在被门控 [5000] 毫秒。原因:[解除关联] 01:06:23.138UTC 错误[AS2-akka.actor.default-dispatcher-17] EndpointWriter | /endpointWriter-akka.tcp%3A%2F%2FPLM%40ftflowsvr02%3A36210-1 | AssociationError [akka.tcp://AS2@lxsvr02g:9500] <- [akka.tcp://PLM@flowsvr02:36210]:错误 [无效地址:akka.tcp://PLM@flowsvr02:36210] [akka.tcp://PLM@flowsvr02:36210] remote.InvalidAssociation:无效地址:akka.tcp://PLM@flowsvr02:36210 原因:akka.remote.transport.Transport$InvalidAssociationException:远程系统已隔离此系统。在重新启动该系统之前,不可能与远程系统建立进一步的关联。]
本地代码:...
...
...
远程端很简单,只需启动一个actor系统(当然,有所有的类实现,同一个jar)
本地主演员系统和远程演员系统之间的心跳似乎在 30 分钟后不起作用(超时???)?我该如何解决这个问题?
谢谢,
=============
更多更新: 为 AKKA 启用调试后:
来自本地(主):2016-08-12 19:14:32.015UTC WARN [PLM-akka.actor.default-dispatcher-5] RemoteWatcher | akka.tcp://PLM@flowsvr02:9888/system/remote-watcher | 检测到无法访问:[akka.tcp://AS1@lxsvr01g:9500]
从远程故障节点(从):2016-08-12 19:17:31.707UTC WARN [AS1-akka.actor.default-dispatcher-21] eliableDeliverySupervisor | leEndpointWriter-akka.tcp%3A%2F%2FPLM%40flowsvr02%3A9888-0 | 与远程系统 [akka.tcp://PLM@flowsvr02:9888] 的关联失败,地址现在被门控 [5000] 毫秒。原因:[解除关联]
应用程序.conf:
spring - AKKA (V2.3.9) Spring Integration:: Cluster Remote Routees 故障转移由于 Spring 类序列化错误
我正在使用一个主角色和多个工作角色设置 akka 集群(使用 akka 库版本 2.3.9 )。Master Actor 配置有池集群感知路由器。
部署应用程序,形成 4 个集群节点。最初所有节点都正确加入集群,但几分钟后节点将与集群解除关联并形成自己的集群。
scala - 在不使用路由器的情况下在远程节点上创建 akka actor
我正在开发一个需要 akka 集群的应用程序。我能够创建 akka 集群并创建演员并向他们传递消息。
以下是我的配置:
以下是我能够在远程节点上创建演员的示例代码。
上面的代码在路由器的帮助下创建了远程参与者。
如果我尝试在没有路由器帮助的情况下创建演员:val actorA = actorSystem.actorOf(Props[Logger])
然后在我的本地系统上创建演员。
有没有办法在不使用路由器或不告诉远程节点我想在哪里创建演员的情况下在远程节点上创建演员?
基本上我想要的是:val actorA = actorSystem.actorOf(Props[Logger])
应该在集群中的任何随机节点(包括本地节点)上创建参与者。