2016-03-25 28 views
1

我正在考慮構建一個系統,爲用戶使用當前返回的查詢中的信息預取查詢(用戶查詢數據庫以查找userId,該數據庫返回用戶所處的電話列表。預取電話查詢(例如日期,持續時間和錄音電話的位置等)用戶可能永遠不會查詢這些內容,但他們通常會這樣做有什麼方法可以查看ActorSystem有多少個演員,以及他們的名字是什麼?

當前,每個查詢都需要~10秒(這裏有一些需要在代碼中進行的優化,但是最大的瓶頸是數據庫,這就是我的手)

所以,我想和演員一起做預取。如果演員沒有使用,他們會自殺爲x時間,但首先我想要一種方式來看看我正在運行的演員。

在Akka.NET中有沒有辦法做到這一點?

回答

2

您如何建模可以通過讓父類actor處理一組prefetchingActor(s)來完成。 Werther你有一個Actor來管理你所有的預取,或者多個每個管理一組專用的預取都取決於你。

但問題是,你最終會得到一個明確定義的頂級actor,你可以發送消息來詢問它有多少個主動預取器。

更新:

您可以使用ActorSelection和通配符將消息發送到多個演員。

關於處理超時。我會使用鈍化模式。小孩演員可以使用ReceiveTimeout方法來監視自己的活動,並且一旦發現它的閒置時間爲x,就會向其父母發送鈍化消息。 一旦家長收到鈍化消息,它將停止路由消息給孩子,而不是緩衝他們。並停止演員。一旦演員終止被確認,它將檢查是否有該演員的任何新消息,如果是這樣,則重新創建演員並將消息從其緩衝區中刷新到該演員。

+0

但是沒有真正的方法讓他們名字?我想最高層的演員可能有一個管理這個狀態的狀態,以及上一次訪問該兒童演員的狀態。然後,父代演員將處理超時等。 –

+1

更新了答案。因爲這是很多評論。 – Danthar

相關問題