Recentemente completato un progetto per la gestione dell'elaborazione della carta di credito. Una delle difficoltà che ho dovuto affrontare è stata la gestione del ritardo / possibile errore dei messaggi di notifica. L'esempio più complesso è stato:
- un sistema esterno che invia la richiesta di pagamento
- il mio sistema ha trasformato quella richiesta in una richiesta al gateway di pagamento
- invio dell'utente al gateway
- in attesa che l'utente esegua il pagamento
- l'utente che ritorna al mio sistema ma viene trattenuto finché il sistema non riceve notifica di successo / errore
- Invio dell'utente al sistema esterno a seconda dell'errore
Ancora più difficile è il fatto che, in caso di mancata trasmissione della notifica, il gateway tenta di inviare la notifica ogni 15 minuti per un certo numero di ore.
L'ho risolto utilizzando un record del database delle transazioni in sospeso e quindi rilevando il successo e l'insuccesso dal rendimento più un listener di ritardo temporizzato per la notifica e la gestione delle transazioni ...
Ragionevolmente difficile!
Ma questo deve essere stato risolto un miliardo di volte prima quindi qual è la migliore pratica?
Riesco a vedere che il mio futuro scriverà la gestione di tutti questi sistemi e gestirà i ritardi e gli eventuali guasti della rete, quindi voglio seguire le best practice.
Le raccomandazioni di libri / articoli sarebbero grandiose.
Grazie in anticipo!