メッセージの送信者が Akka クラスターのローカル アクターまたはリモート アクターのいずれであったかを判断する必要があります。現在、これを行うために私が見つけた唯一の方法は
def isLocal(sndr: ActorRef) = sndr.path.address.toString == context.system.toString
より良い方法は何ですか?
私はAkka 2.3を使用しています
更新: 問題を完全に回避する方法がある場合に備えて、なぜこれを行うのかを説明します。
各ノードでは、ルーターが多数のアクターを管理して作業を行います。ワーカー アクターは結果をローカル マスター アクターに送り返し、センダー リファレンスを介して新しいジョブが割り当てられます。また、マスター アクターは定期的に他のノードのマスター アクターに結果を送信し、異なるノードのマスター間でデータがランダムに「混合」されるようにします。リモート アクターからデータが到着した場合、受信マスターは新しい作業の割り当てを試みるべきではありません。これは基本的に、ミキシングを使用したアイランド メソッドの実装です。