При инициализации системы акторов Akka.NET неожиданно возникли исключения EndpointDisassociatedExceptions. (F#)
Я новичок в Акке; локальная система акторов общалась с удаленной системой на другом компьютере в нашей сети в течение пары дней, а затем просто перестала работать по причинам, которые я не смог понять.
Я знаю, что разрыв ассоциации не обязательно является проблемой (#6 на http://petabridge.com/blog/top-7-akkadotnet-stumbling-blocks/), но в моем случае это определенно не что-то это должно происходить. Я не могу получить результат любой работы, которую я хочу выполнить от удаленного субъекта, и когда я захожу на удаленный компьютер и смотрю на его вывод, я не вижу ни одного из сообщений, подтверждающих получение запроса, который я закодировал это, чтобы напечатать к его консоли.
Это то, что я вижу на удаленной машине, как только я порождаю актера и развертываю его на удаленной машине (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
block, и теперь вывод на удаленном компьютере изменился (я отредактировал blockquote удаленного вывода, чтобы отразить это). Тем не менее, я все еще вижу ошибки, и мои попытки заставить удаленного субъекта работать и вернуть значение по-прежнему терпят неудачу.
РЕДАКТИРОВАТЬ: я переместил мою систему удаленного актера на компьютер с Windows Server, который устранил ошибки SocketException. К сожалению, проблема, с которой я сталкиваюсь сейчас, заключается в том, что после того, как моя удаленная система обменивается данными с моей локальной системой в течение одного сеанса, она больше не работает после того, как я завершаю удаленный процесс. Все последующие попытки установить точно такой же результат установки приводят к знакомым сбоям EndpointDisassociatedException, даже после того, как я перезагружаю обе машины. (Как указано выше, см. http://www.miloonline.net/stash/akka_remote_error.txt для вывода из удаленной системы субъекта.) Существуют ли какие-либо стандартизированные средства завершения или создания экземпляра системы субъекта, которая решает эту проблему?