scala - Mezclando Akka 2, el framework Play2-mini y HTTP
playframework (2)
Yo diría que Spray es tu mejor opción. Sin embargo, no se puede usar con Java. Estamos utilizando el framework play2-mini, pero hay algunos problemas. No está claro cómo conectarlo a Akka, con Java, en comparación con Spray, que está completamente construido alrededor de la noción: cuando llega una solicitud, se obtiene un mensaje de solicitud a un actor.
Con Play, tienes que hacer tu propia conexión: es decir, dentro del método de solicitud estático (roles eyes):
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;
Que funciona bien Y el juego también utiliza el evento AKKA en su sistema, por lo que puedes crear el actor usando el contexto del actor.
Desafortunadamente, actualmente, Play2-mini no es mini en absoluto, depende de todo el framework Play, que también causa más problemas. Aparentemente están trabajando en una versión escueta, que AFAIK va a implicar dividir Play en sus módulos, y no veo que eso suceda pronto.
IMO, Spray es una opción mucho mejor. Su fluidez se adapta mucho mejor con AKKA, pero me duele tener que usar Java aquí, así que no pude usarlo: https://github.com/spray/spray/issues/96
Con respecto a su pregunta de cliente / servicio HTTP, AKKA no tiene ninguna capacidad HTTP en sí misma, por lo que debe interactuar con un servidor HTTP, en este caso, jugar. Puede usar las solicitudes Async para mantener viva la conexión, mientras que su sistema de actor transmite mensajes de manera asincrónica a su actor de cliente http para obtener asincrónicamente una respuesta http, enviando el mensaje de vuelta a la capa de servicio web, y regresando a reproducir.
Afortunadamente eso aclara algo de confusión. También estaba bastante confundido, hasta un par de días de investigación;) Si hay algo más que pueda ayudar a aclarar, háganmelo saber, ¡por el bien de la comunidad! ;)
La lata de pulverización tiene un cliente http asincrónico, pero para nosotros, las personas que están atrapadas en el territorio de Java, también hay: https://github.com/sonatype/async-http-client , que puede usar con AKKA probablemente.
Con el lanzamiento de Akka 2, los módulos HTTP de Akka han sido reemplazados con la opción de usar Play2-mini , donde Play2-mini se parece a Play2 menos el controlador de vista de modelo.
La línea aparece entre implementar un servicio REST y crear un cliente HTTP. Por ejemplo, supongamos que quiero crear un servicio web (no tiene que ser REST) y un cliente HTTP en un servicio, es decir, un proxy HTTP. ¿Uso Akka o Play2-mini?
Creé un servicio de este tipo en Finagle y me gustaría volver a hacer el ejercicio con Akka y / o Play2-mini para ver cómo se compara.
En un nivel alto, ¿cómo se ve la arquitectura? ¿Cómo encajan estos productos?
Desde que hice esta pregunta, encontré esta excelente publicación en el blog oficial de Akka:
http://letitcrash.com/post/17888436664/a-sample-application-showcasing-play-mini-and-akka