Akka 我如何在阿克卡恰当地激发一个临时演员?
我正在构建与Akka中的ask模式类似(但不完全相同)的东西,在Akka中,我需要实例化一个临时参与者,该参与者处理一条消息,然后自杀。我已经在每个请求中使用actorOf()实现了一次基本工作流,但这感觉不太正确,因为它每次都会在新路径上注册一个新的参与者Akka 我如何在阿克卡恰当地激发一个临时演员?,akka,Akka,我正在构建与Akka中的ask模式类似(但不完全相同)的东西,在Akka中,我需要实例化一个临时参与者,该参与者处理一条消息,然后自杀。我已经在每个请求中使用actorOf()实现了一次基本工作流,但这感觉不太正确,因为它每次都会在新路径上注册一个新的参与者 做这件事的正确方法是什么?听起来你需要使用一种新的方法。据我所知,Akka futures负责为您创建和处置演员;如果将多个期货组合在一起,您会注意到一些期货在同一个参与者中执行,而另一些则创建了一个新的期货。要无耻地解释文档,请执行以下操
做这件事的正确方法是什么?听起来你需要使用一种新的方法。据我所知,Akka futures负责为您创建和处置演员;如果将多个期货组合在一起,您会注意到一些期货在同一个参与者中执行,而另一些则创建了一个新的期货。要无耻地解释文档,请执行以下操作:
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
}
});
});
导入akka.japi.Function;
导入java.util.concurrent.Callable;
进口akka.dispatch.Futures;
导入akka.dispatch.OnComplete;
Future f=Futures.Future(新的可调用(){
公共字符串调用(){
返回“你好”+“世界”;
}
},system.dispatcher()),然后(new OnComplete()){
未完成的公共void(可丢弃错误、字符串结果){
//对错误和/或结果进行处理
}
});
});
我想这样的事情就足够了?查看文档了解更多示例
@viktor clang可能知道其他情况,但我认为你不应该特别担心在一般情况下产生的演员数量;创建这些线程比创建操作系统线程便宜得多。如果只是一次性的,为什么还需要演员?只是利用未来?Future({process(msg)})(context.dispatcher)通过管道传输到其他actor在上下文中,我需要它成为一个参与者,这样我就可以将它作为发送者传递给另一个actor。然而,更大的问题可能是需要这样做的设计。