Per lungo tempo il nostro tempo è discutere sulla propagazione di eventi globali tra applicazioni che potrebbero (ma non devono) essere su server diversi. Abbiamo poche soluzioni ma non riusciamo a trovarne una perfetta.
Sfondo: Supponiamo che ci sia Applicazione A , Applicazione B e Applicazione C dove Applicazione A può essere un'app accessibile per un utente, ad es un negozio con libri e l'applicazione B è un'app per la creazione di report in tempo reale e l'applicazione C è uno strumento per l'aggregazione di report di vendita da librerie internet e negozi stazionari (di qualche tipo di CRM). Questo non è il modo in cui appare la nostra infrastruttura, questo è solo un esempio.
Scenario: l'utente acquista un libro da Applicazione A che causa l'aggiunta di un ordine nell'account utente. L'applicazione A crea un evento, ad es. book:bought
solo una volta con informazioni sull'acquisto.
Previsto:
-
L'applicazione B ascolta
book:bought
-type eventi da qualsiasi luogo. Quando viene inviato l'eventobook:bought
, l'app genera un rapporto. -
L'applicazione C ascolta anche
book:bought
-type eventi da qualsiasi luogo. Quando viene inviato l'eventobook:bought
, l'app crea un record di vendita e ordine.
Domanda: come gestisci queste situazioni? Avete qualche meccanismo di sub-pub? Come gestisci i problemi di infrastruttura o di rete? Cosa succede se uno dei nodi (come Applicazione B e Applicazione C ) non funziona? Esistono modelli e strumenti affidabili da usare?
Molte grazie per qualsiasi consiglio!
PS. Sì, ho cercato domande simili, ne ho trovate alcune ma molto spesso sono correlate con la propagazione di eventi in un'applicazione . Ho anche trovato questo schema: link ma vorrei sapere da voi che è abbastanza affidabile e come assicurarmi che l'evento propagato verrà consumato più tardi se l'applicazione è inattiva.