3

我是 Akka 的新手;有一个本地参与者系统与我们网络中另一台机器上的远程系统通信几天,然后它就停止工作了,原因我无法理解。

我知道切断关联不一定是问题(http://petabridge.com/blog/top-7-akkadotnet-stumbling-blocks/中的#6 ),但就我而言,这绝对不是问题这应该会发生。我无法获得远程参与者想要执行的任何工作的结果,并且当我登录远程计算机并查看其输出时,我没有看到任何确认收到我的请求的消息对其进行编码以打印到其控制台。

这就是我在远程机器上看到的,只要我生成actor并将其部署到远程机器(spawne myActorSystem actorName <@ expression @> [ SpawnOption.Deploy (Akka.Actor.Deploy (RemoteScope parsedAddress)) ]):

(见http://www.miloonline.net/stash/akka_remote_error.txt的输出)

我本地系统的配置是:

sprintf
    """akka {
        actor {
            provider = "Akka.Remote.RemoteActorRefProvider, Akka.Remote"
            serializers {
                wire = "Akka.Serialization.WireSerializer, Akka.Serialization.Wire"
            }
            serialization-bindings {
                "System.Object" = wire
            }
        }
        remote {
            helios.tcp {
                hostname = %s
                port = 0        // Auto-configure port
            }
        }
    }"""
    (Net.Dns.GetHostName ())

...在远程机器上:

sprintf
    """akka {
        actor {
            provider = "Akka.Remote.RemoteActorRefProvider, Akka.Remote"
            serializers {
                wire = "Akka.Serialization.WireSerializer, Akka.Serialization.Wire"
            }
            serialization-bindings {
                "System.Object" = wire
            }
        }
        remote {
            helios.tcp {
                hostname = %s
                port = 1234
            }
        }
    }"""
    (Net.Dns.GetHostName ())

同样,这些工作正常两三天;我仔细研究了我在 Git 中的代码更改,没有什么可以解释突然和持续的失败。

编辑:最初,我在本地机器remote的块内有 HOCON 配置块。actor我将它移出actor块,现在远程机器上的输出已经改变(我已经编辑了远程输出的块引用以反映这一点)。但是,我仍然看到错误,并且我尝试让远程参与者工作并发送回一个值仍然失败。

编辑:我已将远程参与者系统移至 Windows Server 机器,从而消除了以前的 SocketException 错误。不幸的是,我现在遇到的问题是,在我的远程系统与我的本地系统通信一次会话之后,它在我终止远程进程后就再也无法工作了。任何和所有建立完全相同设置的成功尝试都会导致熟悉的 EndpointDisassociatedException 失败,即使在我重新启动两台机器之后也是如此。(如上所示,远程参与者系统的输出见http://www.miloonline.net/stash/akka_remote_error.txt。)是否有一些标准化的方法来终止或实例化参与者系统来解决这个问题?

4

0 回答 0