java - 玩 Java Akka - Await.result 期待可等待对象但不接受 Future<Object>

标签 java akka

我是框架和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/

相关文章:

java - 链表添加节点不起作用

java - 如何在scala akka中找到父 Actor

java - 使用哪些 Akka Java 类来实现 Future 回调?

java - hibernate - 错误 : Data truncation: Incorrect datetime value

Java catch 错误在循环的第二次迭代中不起作用

java - 查找akka中所有 child Actor 的状态

scala - 优雅的 Iteratee -> 枚举器 "forwarding"正在运行

scala - 如何在akka-http中有条件地添加路由路径?

java - 找不到类 : org. glassfish.jersey.servlet.ServletContainer

java - 格式化 Mysql JSON 与在后端重新格式化为 JSON