【发布时间】:2015-06-16 10:26:20
【问题描述】:
我是玩框架和 AKKA 的新手,我是一名 Java 开发人员。我使用 Play 2.3.7 和 IntelliJ 14。我调用了 Pattern.ask,这将返回一个 Future 对象,该对象具有来自 Web 服务调用的字符串。通过控制台,我可以发现我的演员能够接收请求并执行操作。我不知道如何解析它。我正在尝试使用 Await.result 来阅读未来。但是这个 Await.result 需要等待对象。如果我传递 Future 对象,它会引发编译器异常。请帮忙。
public Result invoke(String message) {
try {
System.out.println("invoke ");
MySampleMessage msg = new MySampleMessage(message);
System.out.println(msg.getMessage());
Future<Object> futr = (Future<Object>) Patterns.ask(myActor, msg, localConfig.getTimeOut());
System.out.println("invoke 1");
////Promise<Object> promise = Promise.wrap(futfure);
String msg1 = Await.result(futr, Duration.create(10, TimeUnit.MILLISECONDS));
System.out.println("invoke 2 ");
return play.mvc.Results.ok("Success " + msg1);
}
catch(Exception e)
{
return (play.mvc.Results.ok("Exception"));
}
}
还有其他方法可以解析来自async 演员的响应吗?
【问题讨论】:
-
您遇到的编译器异常究竟是什么?因为如果它是“类型不匹配”,您只需要将
Await.result值转换为类似的字符串。String msg1 = (String) Await.result(...). -
我遇到了类似的错误 - 预期的 Awaitable
,但在 Await.result 中的 aruement{1} 处找到了 scala.concurrent.Future