Akka.Net - Как вести обработку сообщений при запуске удаленной системы акторов?
Цель: поддержка версий приложений для микро-сервисных приложений без выключения других систем-акторов.
Обзор v1. На приведенной выше диаграмме Service Commander [GREEN] - это приложение удаленной системы-актера, которое запускает и управляет экземплярами приложения-микросервиса [Orange].
Вопрос: Как я могу удержать сообщения от отправки в систему удаленного участника приложения микросервиса во время ее запуска.
namespace ToolsService.Actors
{
/// <summary>
/// Service actor that spins up the application based on the version.
/// </summary>
class ApplicationServiceActor : ReceiveActor
{
public int ApplicationServiceVersion { get; private set; }
private Process _applicationProcess;
public ApplicationServiceActor(int applicationServiceVersion)
{
ApplicationServiceVersion = applicationServiceVersion;
Ready();
}
private void Ready()
{
Receive<BaseMessage>(request =>
{
// Handle incoming messages that will be pushed to
// the remote actor system of the _applicationProcess.
// *** We need to be aware that the remote actor system has
// *** successfully started.
});
}
protected override void PreStart()
{
if (_applicationProcess == null)
{
_applicationProcess = new Process();
_applicationProcess.StartInfo.FileName = "\\Path\\To\\Remote\\TestServiceAppV" + ApplicationServiceVersion + ".exe";
_applicationProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
_applicationProcess.Start();
}
base.PreStart();
}
}
}
Продолжение процесса (обзор v2): если уровень Commander получает сообщение версии 2, будет запущен новый субъект службы приложений. Мы столкнулись с той же проблемой, что и в версии 1, где "Service Actor" должен знать, что новая система Actor готова принимать сообщения.
Любые предложения будут с благодарностью!