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 –