Come faccio a non perdere la natura "reattiva" dei miei servizi, semplicemente perché uno dei servizi non è reattivo?

0

Ultimamente mi sono interessato molto alla progettazione reattiva dei microservizi con architetture streaming e basate su eventi.

Quando uno dei servizi scrive (cioè gestisce), questo paradigma funziona molto bene semplicemente rispondendo agli eventi pubblicati sugli argomenti.

Tuttavia, non controlliamo sempre l'implementazione di tutti i servizi con cui interagiamo. Ad esempio, si consideri un servizio commerciale che espone un endpoint black-box che esegue un lavoro asincrono e restituisce un ID per quel lavoro. Espone inoltre un endpoint per il recupero dello stato di quel lavoro per ID. Per semplicità, supponiamo che questi due endpoint e un endpoint "ottieni risultati" siano gli unici endpoint esposti.

In questo caso, siamo lasciati in una situazione in cui dobbiamo necessariamente interrogare il servizio per verificare lo stato del lavoro. Esistono schemi stabiliti per fare ciò? Direi che un supervisore che esegue il polling su un timer e pubblica lo stato del lavoro potrebbe essere un approccio "fine", ma mi chiedo se ci siano altri approcci sperimentati in battaglia.

    
posta erip 17.03.2018 - 16:46
fonte

0 risposte