Niedawno zakończyłem projekt obsługi przetwarzania kart kredytowych. Jedną z trudności, z którymi się spotkałem, była obsługa opóźnień / możliwych awarii powiadomień. Najbardziej złożonym przykładem było:
- zewnętrzny system wysyłający żądanie zapłaty
- mój system przekształca to żądanie w żądanie do bramki płatności
- wysyłanie użytkownika do bramy
- oczekiwanie na dokonanie płatności przez użytkownika
- użytkownik wraca do mojego systemu, ale jest wstrzymywany do momentu otrzymania przez system powiadomienia o powodzeniu / niepowodzeniu
- Odesłanie użytkownika do systemu zewnętrznego w zależności od awarii
Jeszcze trudniejszy był fakt, że w przypadku nie wysłania powiadomienia brama próbuje wysyłać powiadomienie co 15 minut przez kilka godzin.
Rozwiązałem go, korzystając z bazy danych zawierającej oczekujące transakcje, a następnie wykrywającej powodzenie i niepowodzenie po zwrocie oraz odbiornik z opóźnionym opóźnieniem do powiadamiania i obsługi transakcji ...
Racjonalnie trudne!
Ale musiało to zostać rozwiązane już za wiele razy, więc jaka jest najlepsza praktyka?
Widzę, że moją przyszłością będzie pisanie obsługi między tymi wszystkimi systemami oraz zarządzanie opóźnieniami czasowymi i możliwymi awariami sieci, dlatego chcę stosować się do najlepszych praktyk.
Zalecenia dotyczące książek / artykułów byłyby świetne.
Z góry dziękuję!
źródło