2014-12-07 11 views
5

Si dice sulla Spray site:In che modo Spray può essere asincrono quando HTTP non lo è?

spruzzo è un toolkit open-source per la creazione/strati integrazione basate-HTTP REST in cima Scala e Akka. Essere asincrono, basato su attori, veloce, leggero, modulare e testabile è un ottimo modo per connettere le tue applicazioni Scala al mondo.

Tale asincrono parte mi confonde perché HTTP è un protocollo sincrono.

Puoi spiegare come Spray può essere asincrono quando HTTP non lo è?

risposta

6

Spray utilizza Akka sotto il cofano e Futures. È asincrono nel senso che le richieste in arrivo vengono consegnate agli Akka Actors che a loro volta indirizzano la richiesta e alla fine generano una risposta.

In termini eccessivamente semplificati, una richiesta entra nell'attore di gestione richieste e viene trasferita in modo asincrono a un altro attore che può gestire il routing. L'attore di gestione richieste è libero di elaborare richieste aggiuntive senza bloccare per gestire la risposta. L'attore di routing può passare a un gestore di percorsi specifico nello stesso modo. L'attore con la risposta finita può inviarlo.

Gli attori possono avere diversi tipi di dispatchers che definiscono il modo in cui interagiscono con i thread per elaborare i messaggi, ma in sostanza, l'obiettivo è scrivere codice che non blocca mai o raramente, che è ciò che hanno fatto gli utenti di Spray.

+0

Grazie per la spiegazione. –

+0

sicuro. Ho una spiegazione un po 'datata, ma più profonda dei dispatcher di Akka qui: http://stackoverflow.com/questions/9637031/understanding-the-different-dispatchers-in-akka-2/9642597#9642597 Spero che aiuti ... – jxstanford

Problemi correlati