1
我有一个有很多孩子的演员,我正在查询它以获取其子项中的数据聚合。此操作可能需要几秒钟。适合嵌套式问题的模式
我正要做到这一点,感觉完全错了。处理方法由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
延续,但仍然不相信这是正确的阿卡方式 - 这是重点。我可以让它工作,我只想知道最佳实践方案。
很感谢。问题让我感到惊讶。所以你说的要求比一个告诉给发件人的响应要告诉更贵?是啊,WaitAll是让我流眼泪的原因。伟大的联系,认为这不是我想要的,然后成为一块真棒。 –
Ask价格昂贵的原因是它既创建了一个任务,也是一个临时演员,将会收到来自被问到的演员的回应。临时演员也注册在'/ temp'下,注册和取消注册也有些贵。 –
很好,非常感谢,非常有趣:D –