Sto progettando il backend per una nuova app Web Java e sto cercando di decidere se utilizzare o meno un Event Bus; in particolare lo Guava EventBus
.Quando utilizzare un bus eventi?
La maggior parte delle richieste lato server sarà sincrona: ovvero, l'utente sta richiedendo dati e ha bisogno di una risposta entro pochi secondi. Tuttavia, ci sono anche un bel numero di richieste che possono essere asincrone e che sono "fire and forget" sul lato client. Finché vengono elaborati, al cliente potrebbe importare di meno se sono necessari 2 secondi per l'elaborazione o 2 ore.
Per queste richieste asincrone, ho intenzione di fare in modo che il servlet in ascolto sull'URL mappato pubblichi le richieste in coda. Un consumatore quindi deselezionerà ogni richiesta e la indirizzerà al gestore appropriato. Questo è dove EventBus
può o non può entrare in gioco. La logica aziendale per instradare la richiesta al gestore corretto è piuttosto complessa. Normalmente una via Camel sarebbe la soluzione perfetta. Nel mio caso d'uso, mi chiedo se posso solo collegare un gruppo di "processori" (gestori di eventi) allo stesso bus di eventi, e quindi avere ognuno di questi eventi che si accendono e ricevono gli eventi l'uno dall'altra fino a quando il risultato finale non è prodotta.
Vorrei dire che ho già esplorato con Apache Camel e che credo che Camel sia lo strumento giusto per il lavoro qui. Purtroppo, per ragioni al di fuori dello scopo di questa domanda, non lo userò. Così ho iniziato a escogitare soluzioni simili a Camel, che è il modo in cui sono arrivato allo EventBus
di Guava. Ma potrebbe non essere un sostituto adatto.
Immagino che sto cercando la classificazione del problema che risolve il modello Event Bus
, e quindi ho bisogno di determinare se corrisponde al mio caso d'uso qui.
Grazie @ColinD (+1) - sì, credo che stavo pensando che ogni sottoscrittore/processore potrebbe rimbalzare un evento attorno al bus degli eventi come un flipper all'interno di un flipper. Ad ogni sottoscrittore, l'evento verrebbe modificato, in modo molto simile al modo in cui il 'Message' /' Exchange' viene modificato all'interno dei processori Camel. Sono ancora combattuto tra l'utilizzo o semplicemente il cablaggio manuale dei processori. È il disaccoppiamento a cui sono interessato, ma 'EventBus' non sembra ancora la migliore soluzione (non Camel). Ti sto dando l'assegno verde e ti riporterò con la mia decisione e i risultati. Grazie ancora! – IAmYourFaja
È una sorta di mediatore. – zgulser