16

私はAkkaを学んでいて、俳優同士で話をする方法を見つけようとしています(彼らAをと呼びましょうB)。これは要求/応答シナリオではなく、AいつBでもお互いにメッセージを送信しています。

現在、私には2人の兄弟アクターがいて、お互いに双方向にメッセージを渡します。どちらもに直接作成されますActorSystem。私は最初にのコンストラクターにのをActorRef渡しました。ただし、のコンストラクターはまだ存在しないため、のコンストラクターに渡すことはできません。つまり、このメソッドを循環参照に使用することはできません。ABActorRefBA

私はこれまで読んでいましたがactorFor、これにより、そのパスを使用して俳優を検索できます。ただし、パスが変更された場合、コンパイラによってキャッチされないため、この設定には慣れていません。

別の方法は、すべてのアクターがその親にアクセスできることを考慮して、親との間でメッセージを渡し、次に親にメッセージをAとに渡してもらうことです。ただし、これにより、親が前後に渡されるメッセージタイプに結合されます。BAB

俳優にお互いを認識させるために人々が使用している戦略は何ですか?パスで俳優を検索することに慎重すぎませんか?

4

1 に答える 1

11

私の謙虚な意見では、あなたには3つの戦略があります。それらは、問題に近いものからリストします(ただし、私にとっては最悪のパターンです。申し訳ありません)。

戦略1:アクターAとアクターBを作成し、actorRef AをアクターBのコンストラクターに渡します。ピンポンはアクターBがアクターAにメッセージを送信するところから始まり、アクターAは送信者参照を使用して簡単に返信できます。(またはその逆)


戦略2:アプリケーションに名前付けを処理するレイヤーを作成します。これは、アクターの作成時とクエリ時に名前を割り当てます。これにより、問題が1か所に集中します。


戦略3:ピンポンをしている2人の兄弟俳優が、基本的に各俳優が親と子供とのみ通信し、兄弟についての知識がない、より優れた、よりモジュール化された俳優階層に取って代わっていないのではないかと思います。

于 2012-08-06T07:08:02.840 に答える