簡體   English   中英

如何計算akka系統中在特定時間活躍的某種類型的參與者?

[英]How to count actors of a certain type active at a certain time in an akka system?

Akka 2是否提供一種方法來確定系統中在特定時間處於活動狀態的某種類型的參與者的數量?

我一直在尋找類似的東西

int actorCount = getContext().count(MyActor.class)

要么

Props props = Props.create(MyActor.class, "actorName")
...
int actorCount = getContext().count(props)

要么

getContext().actorSelection("/path/to/actor").count()

我剛剛開始使用Java的akka​​框架,所以請多多包涵。

在我的一個Akka應用程序中(我的第一個應用程序,而不是我想舉的一個如何編寫此類系統的出色示例),我實現了由心跳驅動的低水位/高水位工作生成策略。 低水位線和高水位線是根據活躍的工作角色的數量來定義的,每個活動角色都做一件事情,並且由經理創建。 該經理跟蹤已開始且尚未完成的工作人員,並且可以響應工作生成器的當前活動計數請求。 對這些詢問的答復提供了有關進行中的工作是否已降至低水位線以下以及應產生新工作的信息。

這有點粗糙,現在我正在使用的新系統中,工作生成與工作執行以及檢查點日志記錄之間的連接是以一種更連續,更少“面向批處理”的方式完成的。 該系統即將部署,因此目前還不能確定其性能如何,但是我敢肯定,與以前的系統相比,它將表現出更好的性能。 從本質上講,較早的系統在生成,執行和記錄所做工作方面也更加復雜。

[也要將此作為有效答案]

如果需要計數的actor不是父actor,並且/或者無法檢索目標actor的ActorRef ,則可以選擇以下替代方法。

可以通過發送“ head count”消息(持有一個ActorRef數組)並傳遞每個actor來對某種類型的actor進行計數。 然后,每個目標actor可以將其ActorRef添加到該列表中並轉發消息。 但這取決於系統的性質,並且只有在您毫無疑問地知道在“人數統計”期間沒有任何參與者出現時,該方法才能起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM