scala – 混合Akka 2,Play2-mini框架和HTTP
随着Akka 2的发布,Akka
HTTP modules已被替换为使用
Play2-mini,其中Play2-mini看起来像Play2减去模型视图控制器.
该线在实现REST服务和创建HTTP客户端之间变灰.例如,假设我想在一个服务(即HTTP代理)中创建Web服务(不一定是REST)和HTTP客户端.我使用Akka还是Play2-mini? 我已经在Finagle中创建了这样的服务,并希望用Akka和/或Play2-mini重做练习,看看它是如何比较的. 从高层次来看,架构是什么样的?这些产品如何结合在一起? 解决方法
我会说Spray是你最好的选择.但是,它不能与Java一起使用.我们正在使用play2-mini框架,但是存在一些问题.目前还不清楚如何使用Java将其连接到Akka,而Spray完全是围绕这个概念构建的 – 当请求进入时,您会收到一条演员的Request消息.
使用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; 哪个效果很好.而Play也在其系统中使用AKKA事件,因此你也可以使用它的演员上下文创建你的演员. 不幸的是,目前,Play2-mini根本不是迷你版,它取决于整个Play框架,这也会导致更多问题.显然他们正在进行一项简单的发布,AFAIK将把Play拆分为模块,我不认为这种情况很快就会发生. IMO,Spray是一个更好的选择.它的流畅性与AKKA相得益彰,但我不得不在这里使用Java,所以我无法使用它: 关于您的http客户端/服务问题 – AKKA本身没有任何HTTP功能,因此您需要与HTTP服务器连接,在本例中为play.您可以使用异步请求保持连接处于活动状态,而您的actor系统异步将消息传递给您的http客户端actor,以异步方式获取http响应,将消息发送回Web服务层,然后返回播放. 希望能够解决一些困惑.我也很困惑,直到几天的研究;)如果还有什么我可以帮助澄清,请让我知道 – 为了社区的利益! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |