gpt4 book ai didi

java - 玩 Java Akka - Await.result 期待可等待对象但不接受 Future
转载 作者:行者123 更新时间:2023-11-30 03:23:04 27 4
gpt4 key购买 nike

我是框架和AKKA的新手,我是一名Java开发人员。我使用 Play 2.3.7 和 IntelliJ 14。我调用了 Pattern.ask,这会返回一个 Future 对象,该对象具有来自 Web 服务调用的字符串。通过控制台我可以发现我的 Actor 能够接收请求并执行操作。我不知道如何解析它。我正在尝试使用 Await.result 来读取 Future。但是这个 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 actor 的响应?

最佳答案

您必须小心标准 java 类型和 Akka 类型之间的名称冲突。例如,Java 有 java.util.concurrent.Future输入 Akka 的 Patterns.ask()返回 akka.dispatch.Future .

检查您的类型转换 Future<Object> 。它永远不会在运行时工作,并且稍后会检测到类型不兼容性,因为 Java 的 future 与 Akka 的 Awaitable 无关。 .

关于java - 玩 Java Akka - Await.result 期待可等待对象但不接受 Future<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864996/

27 4 0