Recentemente completato un progetto per la gestione dell'elaborazione della carta di credito. Una delle difficoltà che ho incontrato è stata la gestione del ritardo / possibile fallimento dei messaggi di notifica. L'esempio più complesso è stato:
- un sistema esterno che invia la richiesta di pagamento
- il mio sistema trasforma quella richiesta in una richiesta al gateway di pagamento
- invio dell'utente al gateway
- in attesa che l'utente esegua il pagamento
- l'utente ritorna nel mio sistema ma rimane in attesa fino a quando il sistema non riceve una notifica di successo / fallimento
- Invio dell'utente di nuovo al sistema esterno a seconda dell'errore
Ancora più difficile è stato il fatto che, in caso di mancato invio della notifica, il gateway tenta di inviare la notifica ogni 15 minuti per un numero di ore.
L'ho risolto utilizzando un record di database delle transazioni in sospeso e quindi rilevando l'esito positivo e negativo del reso più un listener di ritardo temporizzato per la notifica e la gestione delle transazioni ...
Ragionevolmente difficile!
Ma questo deve essere stato risolto un milione di volte prima, quindi qual è la migliore pratica?
Vedo che il mio futuro sta scrivendo la gestione tra tutti questi sistemi e la gestione dei ritardi e dei possibili guasti della rete, quindi voglio seguire le migliori pratiche.
I consigli su libri / articoli sarebbero fantastici.
Grazie in anticipo!