Sistema di code semplice e permanente con pub / sub per Node.js?

6

Highly related https://stackoverflow.com/questions/6021938/nodejs-many-clients-requests-through-one-socket

Sto studiando un robusto sistema di trasmissione di messaggi per questa mia applicazione. La soluzione più semplice sarebbe Redis pub / sub (è semplice, efficace e userei anche Redis per il caching) ma, a quanto ho capito, la pubblicazione è un'operazione "one shot" solo per i client effettivamente abbonati. Chiunque si iscriva dopo la pubblicazione, non riceve il messaggio. Mi piacerebbe essere in grado di "archiviare" i messaggi non ricevuti per un po ', quindi se mi ricollego al canale mi piacerebbe recuperare i messaggi che non ho ricevuto. So che sistemi come ActiveMQ con il meccanismo ack e permament queue risolverebbero facilmente questo problema, ma mi chiedo se potrebbe esserci una soluzione / approccio più semplice. Cosa ne pensi?

    
posta Claudio 19.05.2011 - 17:03
fonte

2 risposte

4

usa un secondo database permanente. Usa i redis per l'invio di messaggi in tempo reale tramite pub / sub ma anche tutti i tuoi messaggi in un database permanente (couch / mongo).

Quindi, quando un cliente / utente si riconnette carica tutti i messaggi dal database reale e li mise nel sistema pub / sottosistema redis.

Avrai comunque bisogno di questo per implementare un sistema di eventi storici / passati.

    
risposta data 19.05.2011 - 17:11
fonte
1

Potresti farlo facilmente con CouchDB. Ha un'API / _changes che ti offre una cronologia delle modifiche in corso. Puoi dargli un timestamp per ottenere tutto da allora.

Se ciò non funziona, puoi creare una semplice coda e salvare i messaggi tu stesso. Non deve essere il più veloce perché sono archiviati.

    
risposta data 19.05.2011 - 17:13
fonte

Leggi altre domande sui tag