Miglior risposta è nella sezione commenti (quindi non posso dare loro punti per la risposta :().playframework è veramente asincrono?
mi chiedevo se fosse play framework asincrona in questo modo (il che sarebbe veramente asincrono, o completamente asincrona) Sì, la riproduzione è asincrona sul front-end consentendo 1000 client su 100 thread, ma sul back-end, non c'è modo di ottenerlo, o sbaglio (che spero di essere) .....
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);
}
}
AVVISO che si tratta di un comportamento asincrono estremo e si noti inoltre che se si dispone di un sistema di back-end che impiega pochi secondi per rispondere a ciascuna richiesta, ora occorrono circa 100 macchine in meno per servire la stessa quantità di utenti. contesti normali in cui il sistema di backend è molto veloce, non ci sarebbero ovviamente differenze di prestazioni.
grazie, Dean
Hai letto questo http://www.playframework.org/documentation/1.2.4/asynchronous? Soprattutto le cose su Promises. Questo può anche essere di interesse: http://caffeinelab.net/2010/06/29/asynchronous-http-client-in-play-framework/ – nylund
ok, è stato fantastico, postarlo come risposta .... che il secondo link è estremamente chiaro !!!! ottima risposta !!!! (come mai non posso contrassegnare i commenti come la risposta corretta :(). –
hmmm, quell'esempio mostra un futuro che non ha la possibilità di aggiungere un ascoltatore, quindi giocare deve fare un sondaggio sul futuro e chiedendo isDone, isDone ancora e ancora ???? Questo tipo di puzza .... perché non usare il thread di risposta per notificare la riproduzione, che poi richiamerebbe nel metodo del controller la seconda volta? –