2017-02-10 1 views
1

一貫性のあるハッシュマッピングを使用してルータ経由でメッセージを受け取るプール(グループ?)にアクターを追加したり削除したりしたい(メッセージのIDはエンティティのパスと一致します)。 プールの作成後、返されるのはIActorRefだけです。追加する新しいアクターについて「教えてください」という方法はわかりません。ConsistentHashmappingを使用するときにランタイム中にアクターを追加してakka.netでグループ化またはプールする方法はありますか?

私はルーティングに関するいくつかのチュートリアルとヒントを読んでいます。たとえば、これはhttps://github.com/petabridge/akka-bootcamp/tree/master/src/Unit-3/lesson2 ですが、これらは適合しません。

多分私はこれらのメッセージを自分自身のルータで書く必要がありますか?

+0

一般に、実行中に一貫したハッシュルータにアクターを追加することは、実際に何をしているのか分からない限り、強く推奨されません。一貫したハッシュ・リング、ハッシュの範囲、既存のアクターのそれぞれに責任を負い、変更されるようにアクターを追加/削除すると、つまり、これまでにアクターによって処理されたメッセージの一部は、別のメッセージによって処理されるようになりました。 – Horusiath

+0

なぜですか?グループを使用している場合は、メッセージが処理側のアクタにどのように送られるかはまったく異なります。私は俳優に直接話したり、俳優の選択(アイデンティティに基づいて)を使うことができました。ルーティングは、アクターを見つけるための基準を備えた戦略に過ぎません。あなたはそのような問題の例を挙げることができますか?私は、メッセージの内容に依存することなく、エンティティのリストを管理したい。 – Beachwalker

+0

...アクターの選択ではなく辞書のIDに基づいて、すべての受信メッセージを対応するIActorRefに転送する特定のManagerアクターを使用できます。 – Beachwalker

答えて

0

Akka.Routingパッケージには、新しいルートの追加と削除を可能にする事前定義済みのメッセージがあります。あなたはAkka.net hereのコード行を見つけることができます。たとえば、次のコードは、(私はConsistentHashingGroupでこれをテストした)既存のルータにIActorRefを追加します。

var routee = Routee.FromActorRef(actor); 
router.Tell(new AddRoutee(routee)); 

私はそれので、これを行うにはどのような方法を見つけるために、ソースコードをクロールしなければならなかったことを少しうるさいですpetabridgeのブートキャンプの一部ではありません(または私はそれを見落としましたか?)と私はこれが非常に典型的で一般的なシナリオだと思うにもかかわらずどこでも答えを見つけませんでした。ドキュメンテーションは、この分野ではやや基本的なものです。

このフレームワークを使用する方法を調べる代わりに、Akka.netで開発するソフトウェアのドメインで、安全にいくつかの分の人を安全に助けてくれることを願っています。 ;-)

関連する問題