加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 混合Akka 2,Play2-mini框架和HTTP

发布时间:2020-12-16 18:50:38 所属栏目:安全 来源:网络整理
导读:随着Akka 2的发布,Akka HTTP modules已被替换为使用 Play2-mini,其中Play2-mini看起来像Play2减去模型视图控制器. 该线在实现REST服务和创建HTTP客户端之间变灰.例如,假设我想在一个服务(即HTTP代理)中创建Web服务(不一定是REST)和HTTP客户端.我使用Akka还是
随着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,所以我无法使用它:
https://github.com/spray/spray/issues/96

关于您的http客户端/服务问题 – AKKA本身没有任何HTTP功能,因此您需要与HTTP服务器连接,在本例中为play.您可以使用异步请求保持连接处于活动状态,而您的actor系统异步将消息传递给您的http客户端actor,以异步方式获取http响应,将消息发送回Web服务层,然后返回播放.

希望能够解决一些困惑.我也很困惑,直到几天的研究;)如果还有什么我可以帮助澄清,请让我知道 – 为了社区的利益!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读