私はAkka .NETの一貫したハッシングルータを少し試しました。ハッシュに使用するキーを指定することはできますが、アクター間でキーを割り当てる方法を決定するのはルーターです。一貫したハッシュを使用するときにどのアクタがどのキーを取るかを決定できますか?
アクターAはタイプAのメッセージを受け取り、アクターBはタイプBのメッセージを受け取ります。これはすべて一貫したハッシングルーターで可能ですか?
私はAkka .NETの一貫したハッシングルータを少し試しました。ハッシュに使用するキーを指定することはできますが、アクター間でキーを割り当てる方法を決定するのはルーターです。一貫したハッシュを使用するときにどのアクタがどのキーを取るかを決定できますか?
アクターAはタイプAのメッセージを受け取り、アクターBはタイプBのメッセージを受け取ります。これはすべて一貫したハッシングルーターで可能ですか?
いいえ、既存のルータでは不可能です。
EventBus(Context.System.EventStream.Subscribe(Self, typeof<MyMessage>);
)を使用して特定のメッセージタイプにアクターをサブスクライブし、system.EventStream.Publish(new MyMessage());
にコールすることで公開できます。この方法で公開されたメッセージはすべてのサブスクライバに送信されます。このアプローチの限界は、単一のActorSystemの範囲内でのみ機能することです。
分散型パブリッシュ/サブスクライブのシナリオでは、Akka.Cluster.Toolsプラグインを使用して、そのようなオプションを公開することができます。ただし、この場合、サブスクリプションキーはメッセージタイプではなく文字列です。