C# 如何修复akka.net中的参与者路径

C# 如何修复akka.net中的参与者路径,c#,scheduled-tasks,akka.net,C#,Scheduled Tasks,Akka.net,从日志中可以看出,参与者路径和日志路径是不同的,甚至在路径的末尾附加了$a。我想纠正我的演员路线,所以这是我的阿卡 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://Sch

从日志中可以看出,参与者路径和日志路径是不同的,甚至在路径的末尾附加了$a。我想纠正我的演员路线,所以这是我的阿卡

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.
var config=ConfigurationFactory.ParseString(@)配置{
阿克卡{
木卫一{
固定调度器{
类型=PinnedDispatcher
}
}
}
}");
使用(_actorSystem=actorSystem.Create(“SchedulerAutoAction”,config.GetConfig(“configuration”))
{
/*创建一个actor ref*/
_actorRef=\u actorSystem.ActorOf(Props.Create(()=>newtaskscheduleraktor(mongosettings,dbContext))
.WithRouter(新的RoundRobinPool(2).WithDispatcher(“akka.io.pinted Dispatcher”),“TaskScheduleraktor”);
Console.WriteLine($“aktor路径={u actorRef.path}”);
var delay=TimeSpan.FromMinutes(TaskExecution.task\u execution\u interval);
/*反复安排*/
_actorSystem.Scheduler.ScheduleTeller(TimeSpan.FromMinutes(0)、delay、_actorRef、new Messages()、ActorRefs.NoSender);
}
有人能帮我解决这个问题吗?

如上面所述,池路由器是使用父子层次结构实现的。当您创建一个配置为路由器的参与者时,实际上您正在创建一个非常轻量级的参与者(在您的例子中,这个参与者的路径是akka://SchedulerAutoAction/user/TaskScheduleraktor),它下面保存了一个子对象池(路由对象),并将接收到的消息转发给该子对象池。这就是Akka.NET路由器处理并发性的方式

路由被创建为路由器的匿名子级,因此它们的参与者路径与它们的父级路径相同,具有自动生成的后缀($a、$b、$c等),这允许唯一地识别每个路由

您不能更改参与者的路径,因为它描述了参与者在层次结构中的确切位置。

如前所述,池路由器是使用父子层次结构实现的。当您创建一个配置为路由器的参与者时,实际上您正在创建一个非常轻量级的参与者(在您的例子中,这个参与者的路径是akka://SchedulerAutoAction/user/TaskScheduleraktor),它下面保存了一个子对象池(路由对象),并将接收到的消息转发给该子对象池。这就是Akka.NET路由器处理并发性的方式

路由被创建为路由器的匿名子级,因此它们的参与者路径与它们的父级路径相同,具有自动生成的后缀($a、$b、$c等),这允许唯一地识别每个路由

您不能更改参与者的路径,因为它描述了参与者在层次结构中的确切位置

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);
            }