Sistema di messaggistica

Abbiamo già parlato della capacità di sottoscrivere gli eventi di Twproject. Qui descriviamo brevemente come il mtore lavora.

Quando un utente sottoscrive un evento, per esempio “ToDo created”, viene creato un oggetto chiamato “listener”.

Un listener riferisce a un oggetto di Twproject usando classe e id, ha l’evento per il quale è in ascolto (chiamato “comando”), ha un periodo di validità, ha un utente come proprietario, può essere in ascolto anche per gli oggetti figli, etc. .

Normalmente ci sono tanti listener (migliaia dopo alcuni mesi di utilizzo reale).

Quando accade qualcosa di rilevante, viene generato un “evento” e inserito nella coda degli eventi.

Un job programmato (“EventListenerMatcher”) controlla (di default ogni minuto) per ogni evebto se c’è una sottoscrizione in ascolto. Se non c’è niente in ascolto, l’evento viene rimosso.

Se c’è una sottoscrizione viene generato un messaggio integrando “listener” e dati dell’“evento”; il messaggio è inserito nella coda dei messaggi. Poi l’evento viene rimosso.

Normalmente la coda degli eventi è vuota o contiene solo pochi record.
Una volta che il messaggio è in coda, è pronto per essere consegnato: “EmailMessageDispatcher” e “StickyMessageDispatcher” sono due job programmati che inviano messaggi ai ripettivi canali. Un messaggio per i canali “news” o “digest” rimane nella lista dei messaggi fino a che non viene letto dall’utente, poi viene rimosso. Quindi la coda dei messaggi dovrebbe contenere solo elementi per i canali “news” o “digest”.

Twproject fornisce pagine di lista/ricerca e modifica per sottoscrizioni, eventi e messaggi. Normalmente non c’è bisogno di operare in pagine che sono solo a scopo di monitoraggio: