2017-02-12 55 views
2

我有幾個演員的Akka應用程序。演員樹看起來像這樣:Akka從另一個樹枝跳過演員

   /user 
     /one   TARGET 
    /two /three 
    SOURCE 

在源演員我必須發送消息到目標演員。但是,我不知道如何正確地做到這一點。

從ActorSelection解析ActorRef似乎每次都很糟糕。

是否有任何圖案?

+0

爲什麼解決每一次似乎是一個壞主意?相反,緩存引用是一個壞主意,因爲ref可以改變,例如,演員被重新創建。 – michaJlS

+0

@michaJlS那麼,如果使用重新啓動策略,則ref不會更改。如何解決 - 這需要一段時間,我必須按照每個請求來做,這對我來說是個壞主意 –

回答

0

兩種模式我知道和使用的有:

  1. 發送到源原始信息在傳遞目標ActorRef,這樣的方式來源,知道要回應的目標。當TARGET與消息不同時,這很適用,並且使得單元測試變得容易。
  2. 在ESB或服務定位器中將ActorSelection中的TARGET ActorRef解析一次,然後將其傳遞給SOURCE並使用它。當actor系統中只有一個TARGET實例時,這很有效,但它會使單元測試更復雜一些。
+0

請您給我更多關於第二個選項的信息,因爲它確實只有一個TARGET實例。 –