Mejor respuesta se encuentra en la sección de comentarios (por lo que no les pueden dar puntos para la respuesta :().es playframework verdaderamente asincrónico?
Me preguntaba si era playframework asíncrono de esta manera (que sería verdaderamente asíncrona, o totalmente asíncrona) Sí, el juego es asincrónico en la interfaz permitiendo 1000 clientes en 100 hilos, pero en el back-end, no hay forma de lograrlo, o estoy equivocado (que espero sea) .....
public static void someRequest(String id) {
//This method adds listener to a nio socket listener so it returns
//IMMEDIATELY and page can't be rendered at this point
fetchRemoteDataFromOtherSystem(id, new MyListener());
// DO NOT RENDER PAGE YET but return so thread can be used for other requests
}
public class MyListener extends SomeListener {
public void fireResponse(Response response) {
renderPage(response);
}
}
AVISO que esto sería un comportamiento asíncrono extremo y también tenga en cuenta que si tiene un sistema de fondo que tarda segundos para responder a cada solicitud, ahora necesita alrededor de 100 máquinas menos para atender a la misma cantidad de usuarios. contextos normales donde el sistema back-end es muy rápido, no habría diferencia de rendimiento, por supuesto.
gracias, Dean
¿Has leído este http://www.playframework.org/documentation/1.2.4/asynchronous? Especialmente las cosas sobre Promises. Esto también puede ser de interés: http://caffeinelab.net/2010/06/29/asynchronous-http-client-in-play-framework/ – nylund
bien, eso fue increíble, publícalo como la respuesta ... que el segundo enlace es extremadamente claro !!!! gran respuesta !!!! (¿cómo es que no puedo marcar los comentarios como la respuesta correcta :(). –
hmmm, ese ejemplo muestra un futuro que no tiene la capacidad de agregar un oyente por lo que el juego debe estar haciendo una encuesta sobre el futuro y preguntar isDone, isDone una y otra vez? Ese tipo de hedor ... ¿por qué no usar el hilo de respuesta para notificar el juego que luego llamaría al método del controlador por segunda vez? –