2016-08-05 12 views
0

私はakkaを学んでおり、どのように最高の整理、取得/私の俳優を作成するか分からない。私はこれを実現するための最良の方法は何か部門3にある項目Cのタスクを実行したい場合はakka.netの管理の俳優hiplayyと作成/取得の俳優

は、今私は

Department (1000s) can each have many items (10000s) and each item has properties and work that can be done to it 

のようなセットアップを持っていますか?

私は現在、Department 3の俳優にメッセージ3を教えなければならないので、Item Cの俳優に同じメッセージを伝える必要があります。

私がこの問題を表示するのは、メッセージを2つの場所(DepartmentおよびItem)で処理する必要がある項目を伝えたい場合です。これは私に間違っていると感じますが、パターンを理解していないためかもしれません。

これもステートフルなものにしたいので、私は俳優を存続させたいと思います。それは私のために別のチャレンジを作ります。部門3がロードされているかどうかをどのように知ることができますか(そして、部署3を取得すると、アイテムBの初期化されたアクタがあるかどうかを知る方法は?私はコンテキスト上でSelectionメソッドを使うことができますが、それが実際に存在するかどうかを判断するためには、そのアイデンティティをチェックする必要があります。私がしたことは、読み込まれたDepartmentsのリストを維持してから、私の部門がそのリストに含まれているかどうかを確認してから、その部門を取得したり作成したりすることです。

私はこのプロセスで、私のすべての部署のリストを管理する別の俳優を紹介しました。ここで、私がアイテムBの俳優に送るメッセージはすべて、部門3の俳優を管理する俳優、最後にアイテムBの俳優を経なければなりません。これは以前よりもさらに悪化しています。

私は、すべてのメッセージが通過しなければならないすべての部門を知っている部門スーパーバイザも持っています(部門の宛先メッセージとアイテム送り先のメッセージ)。この時点で、すべてのメッセージがこの単一のアクタを通って流れ、パフォーマンスと保守性について心配しています。

私の質問は、この親子関係をステートフルな状態に保ち、それが所属するDepartmentがロードされているかロードされているかを知らずにItemにメッセージを送信できるようにするには、自体?

答えて

2

アクターが存在するかどうかのチェックについては、hereがあります。 1つの戦略は、スーパーバイザを使用してすべての部門の俳優を作成し、これを使用して、hereのように障害を管理することです。上司は既に作成されているアクターを知り、失敗した場合に通知を受けますので、ここで処理できます。

アクターをアイテムに分割する必要がありますか?彼らは私にメッセージの種類のように聞こえる。あなたは部門をモデル化して、それからアイテムメッセージを送るだけではありませんか?あるいは、DepartmentItem Actorsを持つことができますか? (つまり、部署の俳優がいなくて、アイテムをモデル化するだけです)。あなたが俳優として商品をモデル化する必要があるなら、私はあなたが持っているものは正しい道だと思う - 子供を持つ監督が行く道です。メッセージが役立つ場合は、いつでもメッセージを転送できます。

target.Forward(result, Context);