Akka.Net - Как вести обработку сообщений при запуске удаленной системы акторов?

Цель: поддержка версий приложений для микро-сервисных приложений без выключения других систем-акторов.

RemoteActor-Flow-v1

Обзор 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 готова принимать сообщения.

Любые предложения будут с благодарностью!

0 ответов

Другие вопросы по тегам