我有一个有很多孩子的演员,我正在查询它以获取其孩子中的数据聚合。此操作可能需要几秒钟。
我正要这样做,感觉完全错了。句柄方法由Ask<>
.
public void Handle(Message message)
{
var children = Context.GetChildren();
var tasks = new List<Task<Result>>();
foreach (var child in children)
{
var t = child.Ask<Result>(new Query);
tasks.Add(t);
}
Task.WaitAll(tasks.ToArray()); // Gah!
// do some work
Sender.Tell(new Response(new Results()));
}
我有一些想法,但想得到一些意见,因为我真的不想重新发明一个 20 面的轮子。
我担心Sender
当我最终调用它时它会指向什么Tell
,因为它是一个静态调用。
我最终使用了Task.WhenAll
延续,但仍然不相信这是正确的 Akka 方式——这就是这里的重点。我可以让它工作,我只想知道最佳实践选项。