Systemy partnerów bywają niedostępne. Integracja, która przy pierwszym błędzie po prostu przestaje działać, wymaga człowieka za każdym razem.
Kolejka zamiast wykonania wprost
Operacja trafia najpierw do kolejki, a osobny proces ją wykonuje. Awaria partnera nie blokuje wtedy pracy systemu — zadania czekają i wykonają się później.
Zmienia się też odczucie po stronie obsługi. Zapis zamówienia kończy się od razu, bo nie czeka na odpowiedź przewoźnika. Wysyłka etykiety dzieje się w tle i może się nie udać za pierwszym razem, nie zatrzymując pracy przy kolejnym dokumencie.
Ponawianie z rosnącym odstępem
Pierwsza próba po chwili, kolejne coraz rzadziej. Ponawianie co sekundę przy awarii partnera obciąża go dodatkowo i bywa traktowane jak atak.
Odstęp warto lekko różnicować między zadaniami. Inaczej wszystkie operacje wstrzymane w tej samej minucie ruszą jednocześnie po powrocie partnera i od razu przekroczą jego limit zapytań.
Limit prób
Po ustalonej liczbie nieudanych prób zadanie trafia na listę wymagającą decyzji człowieka. Bez limitu kolejka rośnie w nieskończoność, a wśród zadań technicznych giną te, które naprawdę wymagają uwagi.
Taka lista jest użyteczna tylko wtedy, gdy da się z niej zadanie poprawić i wysłać ponownie. Sam rejestr błędów bez możliwości wznowienia kończy się przepisywaniem danych ręcznie do drugiego systemu.
Błąd trwały kontra chwilowy
Brak odpowiedzi serwera to problem chwilowy — warto ponowić. Odrzucenie z powodu błędnych danych nie zniknie po dziesiątej próbie. Rozróżnienie tych dwóch przypadków oszczędza tysięcy bezużytecznych prób.
Jest jeszcze przypadek pośredni: odmowa z powodu przekroczenia limitu. To błąd chwilowy, ale wymagający dłuższej przerwy niż zwykły. Warto go obsłużyć osobno, zgodnie z tym, co partner podaje w odpowiedzi.
Kolejność
Część operacji musi zachować kolejność: utworzenie zamówienia przed jego aktualizacją. Kolejka wykonująca zadania równolegle może to naruszyć.
Rozwiązaniem jest grupowanie zadań dotyczących tego samego dokumentu, tak by wykonywały się jedno po drugim, przy zachowaniu równoległości między różnymi dokumentami.
Kolejka nie zastępuje decyzji
Kolejka odracza wykonanie, ale nie rozstrzyga, co zrobić z operacją, która nie może się udać. Zamówienie z błędnym kodem pocztowym będzie odrzucane przy każdej próbie, więc potrzebna jest ścieżka powrotu do człowieka i osoba, która ją obsługuje. Warto opisać w jednym miejscu, jakie rodzaje błędów mogą wystąpić i kto reaguje na każdy z nich. Bez tego lista zadań nieudanych rośnie i po pewnym czasie nikt do niej nie zagląda.
Czego to wymaga i kiedy bywa przesadą
Kolejka wymaga miejsca na przechowanie zadań, procesu działającego w tle i osoby reagującej na zadania odrzucone. Przy jednej integracji wykonującej kilka operacji dziennie prostsze bywa ponowienie ręczne. Sens rośnie wraz z liczbą operacji oraz wtedy, gdy niedostępność partnera nie może zatrzymywać sprzedaży.
Widoczność kolejki
Rosnąca liczba oczekujących zadań jest sygnałem wyprzedzającym. Zauważona w porę, pozwala zareagować, zanim zauważą klienci.
Dlatego długość kolejki i wiek najstarszego zadania warto obserwować na stałe. Kolejka pusta przez cały dzień bywa równie podejrzana jak kolejka rosnąca.