il modo migliore per inviare messaggi a tutti gli abbonati con più abbonamenti e più fornitori

3

Sto scrivendo un'applicazione in cui -

Molti utenti possono abbonarsi a post creati da altri utenti.

Quindi per un singolo editore ci possono essere molti abbonati.

Quando un messaggio viene pubblicato da un utente X, a tutti gli utenti che hanno sottoscritto i messaggi dell'utente X verrà inviata un'email.

Come ottenere questo? Sto pensando di usare un modello di iscrizione-sottoscrizione.

E poi sono passato attraverso JMS. Qual è la migliore implementazione JMS da utilizzare in base alla tua esperienza?

Oppure quale altra soluzione proponi al problema?

Devo optare per una soluzione immediata?: L'utente x posta un messaggio, trovo tutti gli utenti (dal database) che si iscrivono all'utente x e poi per ogni utente, chiamo il metodo sendEmail ().

[EDIT] La mia intenzione qui non è quella di inviare e-mail. Mi dispiace davvero se non fosse chiaro. Devo anche inviare alcune notifiche di sistema diverse dall'email a tutti gli abbonati.

Al momento, ho implementato l'invio di e-mail come threadPool

    
posta coding_idiot 26.10.2013 - 19:13
fonte

2 risposte

5

Spero che tu non stia cercando una soluzione specifica per la piattaforma

Se Sì, il tuo requisito evidenzia un modello pub / sub. Ho gestito lo stesso utilizzando RabbitMQ che ha un supporto specifico per lo scenario Pub / Sub.

Senza entrare nei dettagli granulari, per darti un'idea sul modello pub / sub di RabbitMQ

Ha qualcosa chiamato "scambio" oltre a "produttore", "coda", & "Consumatore"

L'idea alla base di questo modello di messaggistica è che il produttore non invia mai messaggi direttamente a una coda. Molto spesso il produttore non sa nemmeno se un messaggio verrà recapitato a nessuna coda. Il produttore può solo inviare messaggi a uno scambio. Uno scambio riceve messaggi dai produttori e dall'altra parte li spinge verso le code.

Supporta diversi tipi di scambio per soddisfare le varie esigenze: diretto, argomento, intestazioni e fanout.

Ciò significa maggiore flessibilità per deconcentrare le funzionalità MQ di base dalla logica aziendale, che è possibile imporre ai formati dei messaggi / logica di consegna / ripetizione

Ho usato il tipo di scambio "argomento" che supporta il routing / filtraggio dei messaggi semplicemente guardando il nome / titolo del messaggio.

Per utilizzare al meglio questa logica - ho avuto una strana esigenza (su un modello pub / sub) di mantenere l'elenco degli iscritti attivi, che sono riuscito a fare con l'introduzione di un messaggio heartbeat (basato su argomenti) su la stessa coda

Per i suddetti motivi e l'elevata precisione sulla consegna dei messaggi e i buoni risultati delle prestazioni del protocollo AMQP supportato, mi sono sentito abbastanza felice della mia scelta

Dichiarazione di non responsabilità: non sto sostenendo che RabbitMQ sia l'unica scelta, ma condividerla come la mia bella esperienza con una soluzione intelligente. Ci sono poche soluzioni per pub / sub sul mercato.

Ho anche trovato WAMP interessante durante l'esplorazione di varie opzioni, ma non l'ho usato per nessuna implementazione commerciale

    
risposta data 03.12.2013 - 23:54
fonte
0

Sono d'accordo con Sarien in quanto XMPP può essere utilizzato per lo scopo. XEP-0060 - Pubblica / sottoscrivi fa esattamente quello che stai cercando di fare ... Può inviare notifiche agli abbonati, così come il carico utile (su richiesta, o non appena viene generato). Dovrai guardare più in profondità per vedere se questo si adatta alle tue esigenze ...

Spero che ti aiuti.

    
risposta data 28.10.2013 - 05:16
fonte

Leggi altre domande sui tag