Вызов Akka.Net Actor из функции и получение подтверждения.

  1. У меня есть система субъектов с субъектом-супервизором, реализованным в домене, который вызывается из-за пределов домена

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

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

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

var result = await supervisorActor.Ask(msg);

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

private Unit Handle(Unit msg)
        => msg;

person Gautam T Goudar    schedule 24.04.2019    source источник


Ответы (1)


Согласно 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
}
person mclark1129    schedule 02.05.2019