Как остановить актера удаленного маршрутизатора, руководитель которого является локальным в Akka.net?
Я создал систему актеров Akka.net с этими актерами
1) Актер высшего уровня "Супервайзер":
_supervisor = _actorSystem.ActorOf(Props.Create<Supervisor>(), "Supervisor");
2) Дочерний актер "WorkerRouter", определенный как круговой актер, контролирующий "WorkerActors":
_props = Props.Create<WorkerActor>().WithRouter(new RoundRobinPool(3));
_workerRouter = Context.ActorOf(_props, "WorkerRouter");
Context.Watch(_workerRouter);
Я наблюдал несогласованное поведение с удаленным развертыванием при остановке WorkerRouter.
При локальном запуске поведение такое, как я ожидаю при вызове:
Context.Stop(_workerRouter);
Это останавливает работу каждого из WorkerActors и их перехватчиков PostStop. Запускается DeathWatch, и Супервизор получает сообщение "Прекращено" для WorkerRouter. Затем я могу воссоздать WorkerRouter.
Если я добавлю приведенную ниже конфигурацию HOCON для удаленного развертывания Supervisor (и WorkerRouter), то поведение будет таким же, как указано выше и ожидается:
deployment { /Supervisor { remote = "akka.tcp://ActorSystem@127.0.0.1:8091" }
Однако мое первоначальное намерение состояло в том, чтобы сохранить Supervisor локальным и развернуть WorkerRouter удаленно. С приведенной ниже конфигурацией поведение не такое, как я ожидаю - WorkerActors по-прежнему завершают работу, но Supervisor больше не получает сообщение Ter прекращено для WorkerRouter, и поэтому я не могу воссоздать WorkerRouter (попытки сделать это приводят к InvalidActorNameException, потому что субъект не завершено, и имя все еще используется):
deployment { /Supervisor/WorkerRouter { remote = "akka.tcp://ActorSystem@127.0.0.1:8091" }
Это дизайн или ошибка в Akka.net?