Как исправить путь актера в akka.net - PullRequest
0 голосов
/ 01 июля 2019
aktor path = akka://SchedulerAutoAction/user/TaskScheduleraktor
[INFO][7/1/2019 5:22:32 AM][Thread 0007][akka://SchedulerAutoAction/user/TaskScheduleraktor/$a] Message Messages from akka://SchedulerAutoAction/deadLetters to akka://SchedulerAutoAction/user/TaskScheduleraktor/$a was not delivered. 1 dead letters encountered.

Как видно из журналов, путь актера и путь журналов различаются, и даже в конце пути добавляется $ a.Я хочу исправить свой путь актера, так что это моя акка.

var config = ConfigurationFactory.ParseString(@"configuration {
                akka {
                   io {
                       pinned-dispatcher {
                            type = PinnedDispatcher
                       }
                   }
                }
            }");

            using (_actorSystem = ActorSystem.Create("SchedulerAutoAction", config.GetConfig("configuration")))
            {
                /* create an actor ref */
                _actorRef = _actorSystem.ActorOf(Props.Create<TaskSchedulerAktor>(() => new TaskSchedulerAktor(mongosettings, dbContext))
                             .WithRouter(new RoundRobinPool(2).WithDispatcher("akka.io.pinned-dispathcer")), "TaskScheduleraktor");

                Console.WriteLine($"aktor path = {_actorRef.Path}");

                var delay = TimeSpan.FromMinutes(TaskExecution.task_execution_interval);
                /* schedule repeatedly */
                _actorSystem.Scheduler.ScheduleTellRepeatedly(TimeSpan.FromMinutes(0), delay, _actorRef, new Messages(), ActorRefs.NoSender);
            }

Кто-нибудь может мне помочь, как я могу это исправить?

1 Ответ

1 голос
/ 08 июля 2019

Как описано в документации Akka.NET способ, маршрутизаторы пула реализованы с использованием иерархии родитель-потомок. Когда вы создаете актера, настроенного как маршрутизатор, на практике вы создаете очень легкого актера (в вашем случае путь этого актера равен akka: // SchedulerAutoAction / user / TaskScheduleraktor ), под которым хранится пул детей (маршрутов), на которые он пересылает полученные сообщения. Именно так маршрутизаторы Akka.NET справляются с параллелизмом.

Маршруты создаются как анонимные дочерние элементы маршрутизатора, поэтому их путь актера такой же, как и у их родителей с автоматически сгенерированным суффиксом ( $ a , $ b , $ c и т. Д.), Что позволяет однозначно распознать каждого пользователя.

Вы не можете изменить путь актера, потому что он описывает точное положение актера в иерархии.

...