使用来自Akka actor的播放WS 2.5.x.

时间:2015-11-17 15:01:41

标签: playframework java-8 akka httpclient playframework-2.5

我正在使用akka和java,并寻找一种方法来使用akka actor中的异步Play WS api。

在游戏WS 2.4.x中,方法WSRequest.get()返回一个F.Promise,可以很容易地转换为Scala Future,然后用akka.pattern.Patterns.pipe传递给某个akka actor按顺序要作为akka消息接收的http响应。

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

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

1 个答案:

答案 0 :(得分:4)

来自migration guide

  

虽然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(或其他方式)。

我非常确定you can still do it easy

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);