我会说喷雾是你最好的选择。但是,它不能用于Java。我们正在使用play2-mini框架,但有一些问题。目前还不清楚如何将它与Java连接到Akka,而Spray则完全围绕这个概念构建 - 当请求进入时,您会向演员请求消息。
一起玩,你必须推出自己的连接: 即,在静态(角色眼)请求方法里面:
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事件,因此您可以使用它的actor context来创建您的演员。
不幸的是,目前Play2-mini并不是最小的,它取决于整个Play框架,这也会导致更多的问题。显然,他们正在制作一个裸机版本,AFAIK将涉及将Play分解成模块,我不会很快看到这种情况。
IMO,喷雾是一个更好的选择。这是fluentness适合多更好地AKKA,但unfort我要在这里使用Java,所以我不能用它: https://github.com/spray/spray/issues/96
至于你的HTTP客户端/服务的问题 - AKKA没有任何HTTP功能本身,所以你需要与HTTP服务器接口,在这种情况下播放。您可以使用Async请求来保持连接的活动状态,而您的actor系统将消息异步传递给您的http客户端actor,以异步获取http响应,将消息发送回web服务层,并返回播放状态。
希望能澄清一些混淆。我也很困惑,直到几天的研究;)如果还有什么我可以帮忙澄清的,请让我知道 - 为了社区的利益! ;)
喷雾罐有一个异步HTTP客户端,但对于我们卡在爪哇岛的人,还有:https://github.com/sonatype/async-http-client,你可以使用AKKA。
您可能会发现[喷雾](https://github.com/spray/spray)有趣。它建立在Akka(现在1.3,但迁移到Akka 2在路线图中)之上,并且具有服务器和客户端。我希望我不会在这里顽强,只是认为喷雾值得一些关注。 – elbowich 2012-03-06 17:57:17
@elbowich谢谢。如果你知道任何这样的喷雾作为代理或网关的例子,我很想看看它。我试图围绕创建任何基于Scala的解决方案所需的一切构建我的技能集。有这么多的选择,在某些时候必须选择一个并坚持下去。我只是不知道哪些......尚;-)我认为TypeSafe堆栈(Scala,Akka,Play)有很大的希望。这只是有点混淆 – Jack 2012-03-07 07:43:43
在这里你去:https://gist.github.com/2008342。你需要喷雾服务器,喷雾客户端和喷雾罐来运行它。 – elbowich 2012-03-09 20:10:37