Usecase : l'utente finale effettua un ordine sul sito Web dell'azienda, l'ordine deve essere trasferito alla schermata dell'amministratore dell'azienda con una piccola latenza. La società ha più filiali (identificate dalla combinazione compId e branchId) quindi l'ordine deve essere inviato per correggere l'amministratore.
Quello che ho fino ad ora : un'API REST che accetta l'ordine, la mantiene su MongoDB e scrive il messaggio su gateway di messaggistica . Il gateway di messaggistica disaccoppia il mio servizio di invio e-mail dalla mia app Web.
Con cosa sto combattendo : come inviare ordini al client di amministrazione basato su browser dove la consegna è garantita e in tempo reale? Sto pensando di utilizzare il polling lungo per il client admin, in quanto il volume degli ordini non è abbastanza grande da giustificare WebSockets (è corretto?). E Apache Kafka o Redis per la consegna garantita e lo streaming degli ordini in tempo reale sul lato server.
Soluzione che ho trovato : quando l'amministratore esegue l'accesso SseEmitter viene creato sul server e archiviato in una mappa in cui la chiave è composta da compID e BranchId. Quando arriva un ordine, viene aggiunto all'argomento o Redis di Kafka. Un listener ( kafka o redis ) ascolta questi eventi e cerca di ottenere l'SSE per questo ordine dalla mappa, se trovato, scrive l'ordine sull'SSE. E rimuovi l'ordine dall'argomento o Redis DB.
Domande :
- Che cosa è più adatto per questo Kafka o Redis? Non ho un precedente esperienza per entrambi.
- Quali potrebbero essere i problemi con questo approccio? lunghi sondaggi, messaggistica, ecc. C'è qualcosa che sto cercando?
- La mia ipotesi relativa alle prese web è corretta?
- Qualsiasi altra informazione che potresti avere.