我試着從ActorSelection中獲取倍數ActorRef。有人知道是否有可能?是否可以從ActorSelection中檢索多個actorRef?
我的代碼
ActorRef actorRef = Await.result(getContext().actorSelection("/user/regions/*").resolveOne(timeout), timeout.duration());
我試着從ActorSelection中獲取倍數ActorRef。有人知道是否有可能?是否可以從ActorSelection中檢索多個actorRef?
我的代碼
ActorRef actorRef = Await.result(getContext().actorSelection("/user/regions/*").resolveOne(timeout), timeout.duration());
這是不可能的使用resolveOne
,顧名思義,它返回一個參考。您可以向ActorSelection
發送消息,該消息將消息發送給與該選擇相匹配的每個演員,並讓這些演員回覆。如果您使用內置的Identify
消息,則根本不需要改變接收演員。從該文檔在http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Identifying_Actors_via_Actor_Selection:
消息可以經由ActorSelection和 ActorSelection的路徑發送遞送每個消息時,查找。如果 選擇不匹配任何actor,則該消息將被丟棄。
要獲取ActorSelection的ActorRef,您需要發送一條 消息給選擇,並使用參與者的回覆 的sender()引用。有一個內置的Identify消息,所有演員 將理解並自動回覆包含ActorRef的ActorIdentity 消息。如果具體名稱 查找失敗(即,非通配符路徑元素不對應於 現場演員),則消息由 專門處理,則生成否定結果。請注意, 這並不意味着該回復的傳遞是有保證的,它仍然是 是正常消息。
很好的解釋。謝謝! –