Il gateway API dovrebbe attendere fino a quando tutti i micro servizi non sono stati completati?

1

per il nostro progetto, stiamo utilizzando i micro servizi con pattern gateway API. Una delle caratteristiche che il client fa è generare un report. Client, compila un modulo e carica un file e il nostro sistema genererà un report. Vogliamo elaborare il file e i dati del modulo, archiviare i dati nel database, quindi inviare tutti questi dati all'algoritmo che alla fine genera i report.

Abbiamo un servizio che gestisce le interazioni del database: questo servizio sarà responsabile dell'elaborazione del modulo e del salvataggio nel database e la generazione del report coinvolge altri 5 servizi.

La nostra considerazione attuale è di avere il gateway API in attesa fino a quando la generazione del report non è completa, ma non riesco a capire perché "non suona bene". Quindi, ho bisogno di aiuto su questo.

Credo che un modello di sottoscrizione dell'editore potrebbe essere migliore, ma non sono sicuro di come vengono gestiti gli errori o di come tenere traccia dello stato del report, inoltre ho bisogno di alcune informazioni su quest'area.

Per favore fatemi sapere se avete bisogno di ulteriori informazioni. Sarò molto felice di discuterne ulteriormente.

Grazie in anticipo

    
posta melis 26.04.2017 - 14:29
fonte

1 risposta

1

Pubblica / sottoscrivi significherebbe che uno qualsiasi dei tuoi micro servizi potrebbe voler ottenere l'istruzione GenerateReport per iniziare a generare il rapporto. Se questo è ciò che vuoi allora sì, pub / sub è parte dell'approccio.

Tuttavia, sospetto che uno dei micro servizi sia responsabile del coordinamento della generazione. In tal caso, stai semplicemente cercando una semplice messaggistica utilizzando un bus di servizio o code di messaggi semplici.

Con la messaggistica si ottiene la promessa che qualcosa sarà fatto in futuro. Quindi, quando il messaggio è stato messo in coda, non è ancora stato completato nulla. Puoi "coerenza finale" di Google per saperne di più.

Ma dal momento che non è stato completato nulla, come si comunica all'utente quando il report è completato o se non riesce? Un approccio è, ancora una volta, la messaggistica. Ma in questo caso potresti semplicemente inviare una email all'utente. O con un collegamento al rapporto generato (o al rapporto allegato) o un messaggio di errore.

    
risposta data 26.04.2017 - 14:56
fonte

Leggi altre domande sui tag