Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 融合了Akka 2、Play2迷你框架和HTTP_Scala_Playframework_Akka_Play2 Mini - Fatal编程技术网

Scala 融合了Akka 2、Play2迷你框架和HTTP

Scala 融合了Akka 2、Play2迷你框架和HTTP,scala,playframework,akka,play2-mini,Scala,Playframework,Akka,Play2 Mini,随着Akka 2的发布,Akka已经被使用选项取代,其中Play2 mini看起来像Play2减去模型视图控制器 实现REST服务和创建HTTP客户机之间的界线变灰了。例如,假设我想在一个服务(即HTTP代理)中创建一个web服务(不必是REST)和一个HTTP客户机。我使用Akka还是Play2 mini 我已经在Finagle中创建了这样一个服务,我想用Akka和/或Play2 mini重新做这个练习,看看它有什么不同 从高层次来看,架构是什么样子的?这些产品如何搭配?我认为喷雾是最好的选择

随着Akka 2的发布,Akka已经被使用选项取代,其中Play2 mini看起来像Play2减去模型视图控制器

实现REST服务和创建HTTP客户机之间的界线变灰了。例如,假设我想在一个服务(即HTTP代理)中创建一个web服务(不必是REST)和一个HTTP客户机。我使用Akka还是Play2 mini

我已经在Finagle中创建了这样一个服务,我想用Akka和/或Play2 mini重新做这个练习,看看它有什么不同


从高层次来看,架构是什么样子的?这些产品如何搭配?

我认为喷雾是最好的选择。但是,它不能与Java一起使用。我们正在使用play2迷你框架,但存在一些问题。现在还不清楚如何用Java将它连接到Akka,而Spray完全是围绕这个概念构建的——当一个请求进来时,你会收到一条请求消息给一个参与者

使用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;
Timeout Timeout=新超时(Duration.parse(“20秒”);
Future=Patterns.ask(myActor,newclientmessage(null),超时);
Promise sdf=Akka.asPromise(未来);
Promise r2=sdf.map(新函数(){
@凌驾
公共结果应用(对象a)抛出可丢弃{
val wsrm=(MyMessage)a;
返回ok((wsrm.val);//消息对象的字符串值
}
});
结果test2=异步(r2);
返回test2;
这很有效。游戏也在它的系统中使用AKKA事件,所以你也可以使用它的演员上下文来创建你的演员

不幸的是,目前Play2迷你版根本不是迷你版,它依赖于整个Play框架,这也会导致更多问题。很明显,他们正在开发一个裸体版本,AFAIK将把游戏分解成它的模块,我看这种情况不会很快发生

在我看来,喷雾是更好的选择。它的流畅性更适合AKKA,但不幸的是,我必须在这里使用Java,所以我不能使用它:

关于您的http客户机/服务问题-AKKA本身没有任何http功能,因此您需要与http服务器接口,在本例中为play。您可以使用异步请求来保持连接的活动状态,同时您的actor系统异步地将消息传递给您的http客户机actor,以异步地获得http响应,将消息发送回webservice层,并返回播放

希望这能消除一些困惑。我也很困惑,直到几天的研究;)如果还有什么我可以帮忙清理的,请让我知道——为了社区的利益!;)


Spray can有一个异步http客户端,但对于我们这些生活在Java土地上的人来说,还有:,你可能可以在AKKA上使用。

问了这个问题后,我在AKKA官方博客上发现了这篇很棒的帖子:


你可能会觉得有趣。它构建在Akka(目前为1.3,但迁移到Akka 2是一个路线图)之上,同时具有服务器和客户端。我希望我不是在这里强词夺理,只是觉得喷雾剂值得注意。@elbowich谢谢。如果你知道任何这样的例子喷雾被用作代理或网关,我也想看看它。我正试图围绕创建任何基于Scala的解决方案所需的一切构建我的技能集。有太多的选择,以至于在某个时候人们不得不选择一个并坚持下去。我只是不知道是哪个。。。然而;-)我认为类型安全栈(Scala、Akka、Play)有很大的发展前景。你走之前,我只是有点困惑。你需要喷雾服务器,喷雾客户端和喷雾罐来运行它。谢谢!我要去看场戏,看看能不能弄清楚每件事都有什么用。我真的很感激麻烦!