0

AKKA の Java Futures API を見ていると、同じ型の複数の先物を処理する方法がたくさんありますが、異なる型の先物を処理するために思いつくものは何もありません。私はこれを実際よりも複雑にしていると思います。

とにかく、2 つの異なるアクターがあるとしましょう。アクター A とアクター B です。それらは異なるクラスに基づいており、それぞれ異なる Future を返します。ただし、actorB は、actorA の Future に依存しています。次のロジックは、このケースをどのように処理するのが最適ですか?

Future<A> a = actorA.sendRequestReplyFuture(...);

Future<B> b = actorB.sendRequestReplyFuture(a);

もし私たちがactorAsとactorBsのリストを持っているとしたらどうでしょう?

4

2 に答える 2

1

警告、メモリから書き込まれたばかりの場合、OOTBをコンパイルできない可能性があります。

Future<B> b = actor.sendRequestReplyFuture().flatMap( new akka.japi.Function<A,Future<B>>() {
  public Future<B> apply(A a) {
     return actor.sendRequestReplyFuture(a);
  }
}
于 2011-07-18T11:32:56.080 に答える
1

あなたが持っているように、それらをラップするのではなく、わずかな変更を加えて、a の結果を b に渡します。

Future a = actorA.sendRequestReplyFuture(...);

Future b = actorB.sendRequestReplyFuture(a.get());

この配置は、が終了actorB.sendRequestReplyFuture()するまで呼び出されないことを 意味しactorA.sendRequestReplyFuture()ます。実際、私はあなたがそこに持っているパターンが好きです.

于 2011-07-14T23:25:18.087 に答える