我如何在Akka中正确解雇一名临时演员?

时间:2012-05-10 09:18:39

标签: akka

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

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

1 个答案:

答案 0 :(得分:5)

听起来你需要使用future。据我所知,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线程便宜得多。