2017-02-12 6 views
2

私はいくつかの俳優とAkkaアプリケーションを持っています。アクターツリーは次のようになります。別のツリーブランチからアクセルacessing俳優

   /user 
     /one   TARGET 
    /two /three 
    SOURCE 

TARGETアクターにメッセージを送信する必要があります。しかし、私はそれを正しく行う方法を知らない。

毎回ActorSelectionからActorRefを解決すると、非常に悪いようです。

パターンはありますか?

+0

なぜ毎回解決するのが悪い考えですか?反対のキャッシングリファレンスは、refが変更できるように、悪い考えです。俳優が再現される。 – michaJlS

+0

@michaJlS再起動ポリシーが使用されていれば、refは変更されません。解決方法について - いつかかかりますが、リクエストごとにそれを行う必要があります。私の心には悪い考えです。 –

答えて

0

2つの私が知っパターンと使用は、次のとおりです。その方法のSOURCEがTARGETに対応するために知っているので、

  1. は、SOURCEに送信された元のメッセージにTARGETのActorRefを渡します。これは、TARGETがメッセージごとに異なる場合にうまく機能し、単体テストを容易にします。
  2. TARGET ActorRefをActorSelectionから1回ESBまたはService Locatorで解決し、SOURCEに渡して使用します。これは、アクターシステムにTARGETのインスタンスが1つだけ存在する場合にはうまく動作しますが、単体テストはもう少し複雑になります。
+0

本当にTARGETのインスタンスが1つしかないので、2番目のオプションに関する詳細を教えてください。 –