2016-05-08 9 views
3

私は最近great video by Riccardo Terrell about Akka.NET and F#を見ましたが、私が聞くつもりの質問は一般的にはAkkaに関連しています。私は彼が監督者と監督の間違いに関する戦略について話し合うところで困惑しました。彼の例では、クライアントはworker.Tell(msg、mailbox.Sender())を呼び出すことによってworkerをworkerに転送するメッセージをスーパーバイザに送信します。そのような練習がどれほど共通しているのだろうか私たちのシステムでは、クライアントが最初にスーパーバイザにワーカーインスタンスを取得してから、Tell関数を直接ワーカーに送信するように依頼する場所がいくつかあります。私はAskを使用することに満足していませんが、私たちの場合、ワーカーアフィニティが必要です。つまり、同じクライアントからのメッセージを同じワーカーにルーティングする必要があるため、クライアントにワーカーインスタンスを簡素化する必要があります。しかし、再びAskは悪いです。したがって、監督された俳優の場合、監督者(Askを避けるため)または「それは依存する」を介してメッセージを受け取ることになっていますか?Akkaの監督された俳優は、メッセージを直接または監督者経由で受信する必要がありますか?

答えて

0

シンプルハッシング関数を使用する場合、1つの解決策はhashing poolである可能性があります。その場合、askerへの参照を返すことを排除できます。

new ConsistentHashingPool(5).WithHashMapping(o => 
{ 
    if (o is IHasCustomKey) 
     return ((IHasCustomKey)o).Key; 

    return null; 
}); 

すべての歓迎!