Consumare messaggi direttamente da una coda che appartiene a un sistema di terze parti

0

Stiamo lavorando a un progetto che interagisce con più sistemi di terze parti e hanno bisogno dei reciproci dati per funzionare. Ora, per alcuni dati che devono essere sincronizzati in più sistemi, stiamo progettando di introdurre un'architettura basata su eventi in cui, se i dati vengono creati / aggiornati in un sistema, pubblicherà un evento e gli altri si iscriveranno a tali eventi. / p>

Il problema (?) che ho è, questi sono sistemi di terze parti. Uno viene distribuito a Microsoft Azure, l'altro viene distribuito ad AWS e altri vengono distribuiti nel proprio data center, ecc. In breve, non è certo il tipo di infrastruttura che potrebbero essere utilizzati dai sistemi di terze parti.

Attualmente, comunicano tra loro tramite HTTP.

La domanda è: mentre si introduce l'architettura basata su eventi, il mio sistema dovrebbe consumare direttamente da una coda che si trova in un'infrastruttura di terze parti? O lascia che anche loro scrivano il consumatore che continuerà a comunicare con il mio sistema via HTTP?

    
posta RishikeshDhokare 05.06.2018 - 19:51
fonte

1 risposta

1

Non sono chiaro sulle due opzioni. Sembra che tu stia dicendo che potresti leggere direttamente da una coda, o lasciare che una terza parte scriva qualcosa che legge dalla coda e ti spinge il messaggio attraverso un endpoint di API.

Se questa è la scelta, preferirei molto la coda. Le code sono progettate per essere tolleranti ai tempi di inattività dei consumatori, quindi se il consumatore è inattivo per manutenzione i messaggi attendono solo il backup. Se il tuo venditore scrive un queue reader e lo invia al tuo endpoint, potrebbero non essere altrettanto tolleranti e potresti perdere i messaggi.

Infatti, se la coda che hanno internamente è RabbitMQ o qualcosa di simile, tutti supportano le notifiche push HTTP in modo che il risultato finale sia comunque una chiamata HTTP al sistema.

Per quanto riguarda i diversi fornitori di servizi, non c'è molta differenza nella lettura da una coda in AWS, Azure o locali. La sintassi per estrarre un messaggio da una coda sarà leggermente diversa per ogni implementazione, ma le idee di base sono le stesse.

    
risposta data 06.06.2018 - 15:48
fonte