[英]How to fix actor path in akka.net
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.
從日志中可以看到,actor路徑和日志路徑是不同的,甚至在路徑的末尾也附加了$ 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);
}
有誰能幫我解決這個問題?
如Akka.NET文檔中所述,池路由器是使用父子層次結構實現的。 當您創建一個配置為路由器的角色時,實際上是在創建一個非常輕量的角色(在您的情況下,該角色的路徑為akka:// SchedulerAutoAction / user / TaskScheduleraktor ),該角色下方保留了一組子代(路由),它將接收到的消息轉發到的位置。 這就是Akka.NET路由器處理並發的方式。
路由是作為路由器的匿名子代創建的,因此其角色路徑與帶有自動生成的后綴( $ a , $ b , $ c等)的父代路徑相同,從而可以唯一地識別每個路由。
您無法更改角色的路徑,因為它描述了角色在層次結構中的確切位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.