6

我正在构建与 Akka 中的 ask 模式类似(但不完全相同)的东西,我需要在其中实例化一个处理单个消息然后自杀的临时 actor。我已经为每个请求使用了一次 actorOf() 实现了基本的工作流程,但这感觉不太对,因为它每次都会在新路径上注册一个新的演员。

这样做的正确方法是什么?

4

1 回答 1

5

听起来您需要使用future。据我了解,Akka futures 为您处理 actor 的创建和处置;如果您flatMap将多个future 放在一起,您会注意到一些future 在同一个actor 中执行,而对于另一些future,则会创建一个新的。无耻地解释文档:

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 回答