Akka/Scala でブロードキャスター ルーターにルートを追加/削除する良い方法をご存知ですか?
私は Resizer を見てきましたが、私のニーズを満たしていません (Resizer にサイズ変更 (ルートの追加) を明示的に要求する方法がわかりません。削除するには、アクターに Poison Pill を送信してから削除する必要があるようです)。 )。
これまでのところ、ActorRef のリストを持つルーターがあり、AddRoutee および RemoveRoutee メッセージを送信しています....
私のビジネスケース: ネットワークから (プロキシ経由で) データを取得するアクターがいて、並列処理のためにこのデータを独立したアクターにディスパッチする必要があります。受信者 (DAG) のグラフの性質により、グラフは実行時に進化し、頂点/エッジが変更される可能性があるため、ルートを追加および削除する必要があります
これを行うには、よりクリーンな方法が必要です。
ポインタをありがとう。
Akka に処理してもらいたいコードの例:
class MDActor extends Actor {
@volatile var routees = Set[ActorRef]()
def receive = {
case ar: AddRoutee => routees = routees + ar.actorRef
case rr: RemoveRoutee => routees = routees - rr.actorRef
case msg => routees.foreach(r => r forward msg)
}
}