私はアクカを学んでいると私は俳優がお互いに話をする方法を把握しようとしている(A
とB
と呼ぶ)。要求/応答のシナリオではなく、A
とB
はいつでも互いにメッセージを送信しています。アクターactorFor対ActorRefを渡す対
現時点では、私はお互いに両方向にメッセージを渡す2つの兄弟俳優を持っています。それらはともにActorSystem
に直接作成されています。私は最初A
のActorRef
をB
のコンストラクタに渡しました。しかし、B
のActorRef
をA
のコンストラクタに渡すことはできません。まだ存在しない、つまりこのメソッドを循環参照に使用できないためです。
私はactorFor
について読んできました。これは、そのパスを使って俳優を見てみましょう。しかし、私はこの設定に慣れていません。なぜなら、パスが変更された場合、コンパイラーはそれを捕まえないからです。
もう一つの選択肢は、すべての俳優を考慮すると、その親へのアクセス権を持っている、親にA
とB
からのメッセージを渡し、その後、親が戻ってダウンA
とB
へのメッセージを渡すことです。しかし、これは、前後に渡されるメッセージタイプに親を結合します。
俳優同士が互いを意識させる戦略は何ですか?私はパスで俳優を探すのには慎重すぎるのですか?
'ActorRef'sをインスタンス化するときに' lazy val'sを使ってみましたか?私はこれが循環依存を解決するのに役立つだろうと想像することができます。 Scalaを使うと仮定すると... – agilesteel
私はちょうどそれを行って、それは動作します。私はあなたが定義される前に怠け者の言葉を参照するのを知らなかった - クレイジーなもの!先端に感謝します。私は、ActorRefsとパスを渡すことについて人々がどのように感じているかを知ることにはまだ興味があります。 – Geoff
http://doc.akka.io/docs/akka/2.0.2/general/addressing.htmlを必ず読んでください。 – sourcedelica