2

我正在使用带有 java 的 akka,并寻找一种在 akka 演员中使用异步 Play WS api 的方法。

在 play WS 2.4.x 中,该方法WSRequest.get()返回一个F.Promise可以轻松转换为 Scala的方法Future,然后通过管道akka.pattern.Patterns.pipe传递给一些 akka 演员,以便将 http 响应作为 akka 消息接收。

在 play WS 2.5.x 中,该方法WSRequest.get()返回一个CompletionStage我无法弄清楚如何将它传递给 Akka 演员的方法。

那么如何在 Akka 演员中正确使用 play WS 2.5.x api?

4

1 回答 1

4

迁移指南

虽然 Play 2.4 是针对 Scala 2.10 和 Scala 2.11 进行交叉编译的,但这个新版本的 Play 仅适用于 Scala 2.11。放弃 Scala 2.10 支持的原因是 Play 对 scala-java8-compat 有一个新的库依赖项,该库仅适用于 Scala 2.11。这个库可以很容易地在常见的 Scala 和 Java8 类型之间进行转换,因此简化 Play 核心是很有价值的。此外,您可能会发现它在您自己的 Play 项目中使用起来很方便。例如,如果您需要将 Scala Future 实例转换为 Java CompletionStage(或相反)。

我很确定你仍然可以轻松做到

import static scala.compat.java8.FutureConverters.*;

...

final Promise<String> p = promise();
final Future<String> sf = p.future();
final CompletionStage<String> cs = toJava(sf);
Future<String> sf1 = toScala(cs);
于 2015-11-17T18:41:02.393 回答