Jac*_*ack 6 scala akka playframework play2-mini
随着Akka 2的发布,Akka HTTP模块已被替换为使用Play2-mini的选项,其中Play2-mini看起来像Play2减去模型视图控制器.
该线在实现REST服务和创建HTTP客户端之间变灰.例如,假设我想在一个服务(即HTTP代理)中创建Web服务(不一定是REST)和HTTP客户端.我使用Akka还是Play2-mini?
我已经在Finagle中创建了这样的服务,并希望用Akka和/或Play2-mini重做练习,看看它是如何比较的.
从高层次来看,架构是什么样的?这些产品如何结合在一起?
我想说喷雾是你最好的选择。但是,它不能与 Java 一起使用。我们正在使用 play2-mini 框架,但存在一些问题。目前尚不清楚如何使用 Java 将其连接到 Akka,而 Spray 完全是围绕这个概念构建的 - 当请求传入时,您会收到一条发送给 actor 的请求消息。
使用 Play,您必须滚动自己的连接:即,在静态(角色眼睛)请求方法内:
Timeout timeout = new Timeout(Duration.parse("20 seconds"));
Future<Object> future = Patterns.ask(myActor, new ClientMessage(null), timeout);
Promise<Object> sdf = Akka.asPromise(future);
Promise<Result> r2 = sdf.map(new Function<Object, Result>() {
@Override
public Result apply(Object a) throws Throwable {
val wsrm = (MyMessage)a;
return ok((wsrm).val); // String value from message object
}
});
Result test2 = async(r2);
return test2;
Run Code Online (Sandbox Code Playgroud)
效果很好。Play 也在其系统中使用 AKKA 事件,因此您也可以使用它的 actor 上下文来创建 actor。
不幸的是,目前Play2-mini根本不是mini,它依赖于整个Play框架,这也导致了更多问题。显然他们正在开发一个简单的版本,据我所知,它将涉及将 Play 分成它的模块,而且我认为这种情况不会很快发生。
IMO,喷雾是一个更好的选择。它的流畅性更适合AKKA,但不幸的是我必须在这里使用Java,所以我无法使用它: https: //github.com/spray/spray/issues/96
关于您的 http 客户端/服务问题 - AKKA 本身没有任何 HTTP 功能,因此您需要与 HTTP 服务器交互,在本例中为 play。您可以使用异步请求来保持连接处于活动状态,同时您的 actor 系统将消息异步传递到您的 http 客户端 actor 以异步获取 http 响应,将消息发送回 Web 服务层,然后交还给播放。
希望这能消除一些困惑。我也很困惑,直到几天的研究;)如果还有什么我可以帮助澄清的,请告诉我 - 为了社区的利益!;)
Spray 可以有一个异步 http 客户端,但对于我们这些困在 Java 领域的人来说,还有:https: //github.com/sonatype/async-http-client,您可能可以与 AKKA 一起使用。
归档时间: |
|
查看次数: |
3852 次 |
最近记录: |