6

私はAkkaのaskパターンに似た(しかし同一ではない)何かを構築しています。そこでは、単一のメッセージを処理してから自殺する一時的なアクターをインスタンス化する必要があります。リクエストごとにactorOf()を使用して基本的なワークフローを実装しましたが、毎回新しいパスに新しいアクターが登録されるため、これは適切ではありません。

これを行う適切な方法は何ですか?

4

1 に答える 1

5

フューチャーを使用する必要があるようです。私が理解している限り、Akka先物はあなたのために俳優の作成と処分を引き受けます。flatMap複数の先物を一緒に使用すると、同じアクター内で実行されるものもあれば、新しいアクターが作成されるものもあります。ドキュメントを恥知らずに言い換えるには:

import akka.japi.Function;
import java.util.concurrent.Callable;
import akka.dispatch.Futures;
import akka.dispatch.OnComplete;

Future<String> f = Futures.future(new Callable<String>() {
  public String call() {
    return "Hello" + "World";
  }
}, system.dispatcher()).andThen(new OnComplete<String>() {
    public void onComplete(Throwable err, String result) {
        // do something with the err and/or result
    }
   });
});

上記のようなもので十分だと思いますか?その他の例については、ドキュメントを確認してください...

@ viktor-clangは別のことを知っているかもしれませんが、一般的なケースでスポーンされるアクターの数について特に心配する必要はないと思います。OSスレッドよりもはるかに安価に作成できます。

于 2012-05-15T14:11:12.117 に答える