Sto lavorando a una partita multiplayer e ha bisogno di una coda di messaggi (ad esempio, messaggi in entrata, messaggi in uscita, senza duplicati o messaggi eliminati supponendo che non ci siano sgomberi della cache imprevisti). Qui ci sono le code memcache basati io sappia:Coda messaggi basata su Memcache?
- MemcacheQ: http://memcachedb.org/memcacheq/
- Starling: http://rubyforge.org/projects/starling/
- Depcached: http://www.marcworrell.com/article-2287-en.html
- Sparrow: http://code.google.com/p/sparrow/
ho imparato il concetto della coda memcache da this blog post:
Tutti i messaggi vengono salvati con un numero intero come chiave. C'è una chiave che ha la chiave successiva e una che ha la chiave del messaggio più vecchio nella coda. Per accedere a questi il metodo di incremento/decremento viene usato come atomico, quindi ci sono due chiavi che fungono da blocchi. Vengono incrementati e, se il valore restituito è 1, il processo ha il blocco, altrimenti continua ad aumentare. Una volta che il processo è finito, riporta il valore a 0. Semplice ma efficace. Un avvertimento è che il numero intero sarà overflow, quindi c'è qualche logica in posto che imposta i tasti usati su 1 una volta che siamo vicini a quel limite. Poiché l'operazione di incremento è atomica, il blocco è necessario solo se vengono utilizzati due o più memcaches (per ridondanza), per mantenere quelli sincronizzati.
La mia domanda è, c'è un servizio di coda messaggi basato su memcache che può essere eseguito su App Engine?
Mi aspetto che la scadenza degli elementi nella cache sia basata sull'inattività, quindi se la vita della coda è come dici tu probabilmente starai bene. Sebbene ci siano molte qualificazioni in questa affermazione, devi assolutamente gestire gli oggetti persi in coda. –
Devo anche usare una coda messaggi con GAE, ma non ho idea su come collegare i servizi di coda basati su memcache sopra menzionati (MemcacheQ, sparrow ecc.) Con GAE, poiché GAE supporta solo Java e Python, quindi vorrei piace conoscere qualsiasi idea su di esso. Inoltre, quali sono gli altri servizi di coda dei messaggi che possiamo utilizzare con GAE, ad eccezione di AmazonSQS? –