Skip to main content

Mechanizm ponawiania transakcji/kont (PushService)

Maxime avatar
Written by Maxime
Updated over 4 months ago

Każda agregacja danych jest wypychana do CBT.

W przypadku nieudanego requestu PushAccounts/PushTransactions (takie logi można znaleźć w mongo z logger: Santander.PushService), zestaw danych trafia do bazy w mongo PushService. (W przypadku gdy na pierwszy strzał dostaniemy kod błędu 500,400 poanwiamy natychmiast 3x dany zestaw, jesli dalej się nie udaje zapisujemy je w mongo)

W niej są kolekcje: AccountsRequest, TransactionsRequest, które przechowują informacje o danych niepoprawnie wypchniętych (można tam podejrzeć strukturę danych oraz pełne informacje)

Każdy taki zestaw ma swój licznik (RetryCounter), który zlicza ilość ponownych prób wypchnięcia. Ten licznik jest konfigurowalny aktualnie ma wartość 5.

Jeśli w jakimś przedziale czasowym, ten licznik osiągnie wartość 0, nie będzie już prób wypchnięcia tych danych. (Zakładamy że o ile po 5 strzałach dalej się nie udało, to jest to jakiś większy problem jak np. niedostępność CBT).

Ponawianie transakcji następuje w przypadku, gdy dany zestaw danych trafił do kolekcji AccountsRequest, TransactionsReques, a przy nowej agregacji danych dla innych kont wypchnięcie się powiodło (oraz minęło 5 min od czasu wstawienia poprzedniego zestawu danych do kolekcji)

Jeżeli problem np. niedostępności CBT zostanie rozwiązany, należy zaktualizować licznik na wartość 5, wtedy mechanizm ponowie wypchnięcie wszystkich transakcji/kont.

Tak więc, te informacje nie zginą.

Wszystkie struktury odpowiedzi z CBT muszą mieć określony format który wygląda następująco:

{ "Success" : true,
"Error" : ""}

Gdy odpowiedź będzie inna, mechanizm może rzucić wyjątkiem w logach, a transakcje mogą nie zapisać się do ponownego wypchnięcia.

Did this answer your question?