Skip to main content

Scheduler Service

Maxime avatar
Written by Maxime
Updated over 4 months ago

Opis mechanizmu

Scheduler Service jest to Serwis który zarządza predefiniowanymi jobami. Aktualnie są to:

  1. paymentUpdate - job odpowiadający za odświeżanie statusów płatności w cyklach co 6h począwszy od godziny 12:00. Job cyklicznie z takim interwałem czasowym wywołuje API wymaganych ASPSP z zapytaniem getPayment o wszystkie płatności, które w bazie są w statusie InProgress. Płatności te są zapisane w bazie LDS (SQL) w tabeli payment.Payment. kolumna Status wskazuje aktualny status zleconej płatności.

  2. syncUpdate job odpowiada za odświeżanie danych klientów (transakcje i konta) co 8h począwszy od godziny 12:00. Job cyklicznie z takim interwałem czasowym wywołuje API wymaganych ASPSP z zapytaniem getTransactions oraz getAccount. Każde odpytanie ASPSP tworzy nową sesję , która zapisywane jest w LDS w tabeli ApiSession. Wartość 3 w kolumnie sessionSource oznacza że taka sesja to wynik działania schedulera.

Konfiguracja mechanizmu

W docker compose w sekcji SchedulerService konfigurowane są godziny uruchamiana danego job'a oraz flaga jego aktywacji/ deaktywacji. Poszczególne parametry zostały opisane w tabeli poniżej

Parametr

Opis

Komentarz

SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__disabled

flaga true wyłącza, false włącza dla job'a do odświeżania kont

SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__timeOfDay__hour

godzina uruchomienia z przedziału [1;24], dla job'a do odświeżania kont

SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__timeOfDay__minute

minuty danej godziny uruchomienia z przedziału [0;60], dla job'a do odświeżania kont

SchedulerServiceStartupConfig__Jobs__DailyJobs__paymentUpdate__timeOfDay__hour

godzina uruchomienia z przedziału [1;24], dla job'a do odświeżania płatności

SchedulerServiceStartupConfig__Jobs__DailyJobs__paymentUpdate__timeOfDay__minute

minuty danej godziny uruchomienia z przedziału [0;60], dla job'a do odświeżania płatności

SchedulerServiceStartupConfig__Jobs__DailyJobs__paymentUpdate__disabled

flaga true wyłącza, false włącza dla joba do odświeżania płatności

SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__jobArguments__batchSize

Liczba użytkowników odświeżonych w jednym batch’u.

Default: 10

Typ int, nie może przyjmować wartości ułamkowych, tylko całkowite. Obie minimalne wartości to 1

SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__jobArguments__batchInterval

Liczba minut co jaką uruchamiany jest kolejny batch użytkowników ustawionych. Liczność pojedynczego batch'a zdefiniowana jest w parametrze SchedulerServiceStartupConfig__Jobs__DailyJobs__syncUpdate__jobArguments__batchSize

Default: 2

Typ int, nie może przyjmować wartości ułamkowych, tylko całkowite. Obie minimalne wartości to 1

  • Zalecane, aby zadania się nie zazębiały oraz aby nie były startowane zbyt często.

  • Job do synchronizacji dla każdego usera w danym banku odświeża konta, co może tworzyć w przyszłości liczbę sesji uzależnioną od liczby klientów przemnożoną przez liczbę podłączonych banków.

  • Jeżeli ASPSP zwróci informacje o rachunkach w krótkim czasie (np. dla 10 rachunków w ciągu 1 minuty), to wtedy będzie oznaczało minutę bezczynności do kolejnego job'a. Można przyspieszyć odświeżanie informacji o rachunkach poprzez zwiększenie batchSize.

  • Uruchomione joby sprawdzają w bazie User w kolekcji User czy użytkownik posiada flagę "updateOffline" ustawioną na wartość true - jeśli tak, to będzie oznaczało, że konta użytkownika zostaną odświeżone.

  • Nie zapewniamy kolejności odświeżania rachunków, są one brane losowo do odświeżenia.

Log w wykonania sesji schedulera

Weryfikacja przebiegu danego job'a można też kontrolować w bazie Mongo. W tym celu należy odszukać log który występuje message:

  • “Job syncAllActiveOldUsersUsingActiveConsents started”

  • lub “Job updatePaymentStatus started”

Biorąc pełny trace po executionData.id, można przejrzeć cały przebieg job'a.

Przykładowa konfiguracja i działanie

  • BatchSize jest ustawione na wartość 5

  • Mamy 5 userów, każdy user ma 2 zgody w 2 różnych bankach na 2 rachunki

  • Odświeżamy konta używając metody GET bankaccount z flagą RefreshActiveAccounts=true (zleca jest Scheduler Service)

  • Powstanie 10 sesji w 1 interwale czasu zdefiniowanym w BatchInterval

Did this answer your question?