Akka.net演员可以';无法处理低延迟消息?
我有这样的工作流程:Akka.net演员可以';无法处理低延迟消息?,akka.net,Akka.net,我有这样的工作流程: 父级内部的方法 Receive<UpdatePositionCmd>(cmd => { cmd.Qty = 150; cmd.Price = 100; _positionCoordinatorActor.Tell(cmd); Thread.Sleep(30); cmd.Qty = 250; cmd.Pr
Receive<UpdatePositionCmd>(cmd =>
{
cmd.Qty = 150;
cmd.Price = 100;
_positionCoordinatorActor.Tell(cmd);
Thread.Sleep(30);
cmd.Qty = 250;
cmd.Price = 200;
_positionCoordinatorActor.Tell(cmd);
Thread.Sleep(30);
cmd.Qty = 133;
cmd.Price = 300;
_positionCoordinatorActor.Tell(cmd);
});
Receive(cmd=>
{
指令数量=150;
指令价格=100;
_位置协调器Tell(cmd);
睡眠(30);
指令数量=250;
指令价格=200;
_位置协调器Tell(cmd);
睡眠(30);
指令数量=133;
指令价格=300;
_位置协调器Tell(cmd);
});
Command<UpdatePositionCmd>(cmd =>
{
var child = LookupChild(cmd.PositionName);
if (child != ActorRefs.Nobody)
{
child.Tell(cmd);
}
else
{
var @event = new PositionUpdatedEvent(cmd);
Persist(@event, positionUpdatedEvent =>
{
var childActor = Context.ActorOf(Props.Create(() => new PositionActor()), cmd.PositionName);
childActor.Tell(cmd);
});
}
});
命令(cmd=>
{
var child=LookupChild(cmd.PositionName);
if(child!=ActorRefs.Nobody)
{
child.Tell(cmd);
}
其他的
{
var@event=new positionUpdateEvent(cmd);
持久化(@event,positionUpdateEvent=>
{
var childActor=Context.ActorOf(Props.Create(()=>newpositionactor()),cmd.PositionName);
儿童演员.Tell(cmd);
});
}
});
Command<UpdatePositionCmd>(cmd =>
{
Console.Write($"\nCmd Qty: {cmd.Qty}");
Qty += cmd.Qty;
});
命令(cmd=>
{
写入($“\nCmd数量:{cmd.Qty}”);
数量+=指令数量;
});
线程.Sleep(30)
在“告诉”之间,我得到了正确的输出:
指令数量:150指令数量:250
指令数量:133
总数:533 但是我是否应该删除或减少
线程。Sleep(30)
我得到了一个混乱的结果,它基本上只读取最后一条消息,但读取了三次:
指令数量:133指令数量:133
指令数量:133
总数:399
请帮忙。谢谢大家!
父对象中的方法
接收一个UpdatePositionCmd
实例,将其传递给协调器,然后更新这个相同的命令。有了延迟,这就不那么明显了,因为命令是在第一次处理完成后第二次发出的
您应该为每个调用\u positionCoordinator.Tell
创建一个新实例,并使UpdatePositionCmd
不可变,这样您就不会无意中更改已发送的实例