cmb*_*ter 13
这应该工作得很好.当你使用时ask,创建一个轻量级的actor(我相信用a表示PromiseActorRef)来表示发送者,这样就可以发回一个响应来完成通过Future它创建的响应ask.一个小例子来说明这一点.首先是测试演员:
class TestActor extends UntypedActor{
public TestActor(){
}
public void onReceive(Object msg){
getContext().sender().tell("bar", getContext().self());
}
}
Run Code Online (Sandbox Code Playgroud)
然后是将调用它的非actor参与者
import java.util.concurrent.TimeUnit;
import scala.concurrent.Await;
import scala.concurrent.Future;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.pattern.Patterns;
import akka.util.Timeout;
public class AskTest {
public static void main(String[] args) throws Exception{
ActorSystem sys = ActorSystem.apply("test");
ActorRef ref = sys.actorOf(Props.create(TestActor.class), "mytest");
Timeout t = new Timeout(5, TimeUnit.SECONDS);
Future<Object> fut = Patterns.ask(ref, "foo", t);
String response = (String)Await.result(fut, t.duration());
System.out.println(response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |