Вызов актера Akka.Net из функции и получение подтверждения - PullRequest
2 голосов
/ 24 апреля 2019
  1. У меня есть система акторов с актером-супервизором, реализованным в домене, который вызывается из-за пределов домена

  2. Функция, вызывающая актера супервизора, должна дождаться получения ответа от супервизора, чтобы сделать следующий шаг

  3. Использование Tell это будет невозможно. Используя Ask, как субъект-супервизор может отправить сообщение обратно вызывающей функции?

Я использовал «Спросить», но поскольку актер не вызывает актера-супервизора, ничего не возвращается

var result = await supervisorActor.Ask(msg);

Внутри актера-супервизора, чтобы вернуться обратно (это не работает)

private Unit Handle(Unit msg)
        => msg;

1 Ответ

0 голосов
/ 02 мая 2019

Согласно https://getakka.net/articles/actors/inbox.html, вы сможете использовать класс Inbox для взаимодействия с актерами вне системы акторов.

var target = system.ActorOf(Props.Empty);
var inbox = Inbox.Create(system);

inbox.Send(target, "hello");

try
{
    inbox.Receive(TimeSpan.FromSeconds(1)).Equals("world");
}
catch (TimeoutException)
{
    // timeout
}
...