Wyszukiwanie, pamięć podręczna i zadania w tle

Pamięć podręczna, wyszukiwarka, kolejki i harmonogramy wykonują różne zadania. Dobierz je do potrzebnych funkcji, a potem sprawdź zachowanie aplikacji po awarii każdej z tych usług.

Na tej stronie

Wyszukiwanie i pamięć podręczna

SearchService korzysta z zarejestrowanych strategii i pomija te, które są niedostępne w danej konfiguracji. Sprawdź wymagania wybranej strategii. CacheService przechowuje wyniki do ponownego użycia. Gdy wynik zależy od tenantu lub organizacji, uwzględnij ten kontekst w kluczu pamięci podręcznej.

Architektura w praktyceŻądanie z przeglądarki i zadanie w tle wykonują osobne procesy
Proces aplikacjiObsługuje żądania z przeglądarki
zleca zadanie
KolejkaTryb asynchroniczny
pobiera zadanie
Proces workeraWykonuje pracę w tle
PostgreSQLOba procesy korzystają z danych w swoim zakresie
Zewnętrzne APIWywoływane przez zadanie integracji

Pamięć podręczna i wyszukiwarka to osobne usługi dobierane do funkcji. Działająca strona nie oznacza, że działa również worker.

Kod i dokumentacja

src/service.ts · src/service.ts

Zadania wykonywane w tle

Konfiguracja kolejki wybiera wykonanie lokalne albo asynchroniczne. Praca asynchroniczna potrzebuje działającego workera i zasad ponawiania. Harmonogram uruchamia zadania cykliczne. Nadal trzeba obsłużyć błędy i zapobiec powieleniu operacji biznesowych.

Kod i dokumentacja

src/factory.ts · services/schedulerService.ts

Podobny objaw może mieć różne przyczyny

Co widziszCo sprawdzić
Zmieniony rekord nadal pokazuje starą wartośćPorównaj bazę z odpowiedzią z pamięci podręcznej. Sprawdź klucz, czas ważności i usuwanie starego wyniku po zapisie.
Rekord otwiera się po ID, ale nie ma go w wyszukiwarceSprawdź wybraną strategię wyszukiwania, aktualizację indeksu i filtry dostępu w zapytaniu.
Formularz działa, a eksport czeka na wykonanieSprawdź kolejkę, proces workera, czas oczekiwania zadania i ostatni błąd. Serwer strony może działać przy zatrzymanym workerze.
Kod i dokumentacja

src/service.ts · src/service.ts · src/factory.ts

Jakie dane przekazać do zadania w tle

Worker nie ma sesji przeglądarki. Przekaż identyfikator rekordu oraz tenant i organizację potrzebne do bezpiecznego odczytu. Zdecyduj, czy zadanie ma pobrać aktualne dane przy uruchomieniu, czy korzystać ze stanu zapisanego w chwili zlecenia. To istotne, gdy zamówienie zmieni się podczas oczekiwania.

Dane dostępowe do usług trzymaj na serwerze. W logach uwzględnij identyfikator operacji, aby połączyć zadanie, kolejną próbę i odpowiedź drugiego systemu. Ukrywaj sekrety i pomijaj zbędne dane klientów.

Kod i dokumentacja

src/factory.ts · api/scoped.ts

Przykład: nocna synchronizacja produktów

  1. Ustal, z którego systemu pochodzą aktualne dane produktów i jak łączysz rekordy.
  2. Zapisuj postęp, żeby wznowić przerwane zadanie bez powielania rekordów.
  3. Zapisuj błędy bez haseł, kluczy i zbędnych danych klientów.
  4. Po zakończeniu porównaj dane źródłowe z docelowymi, także rekordy brakujące i odrzucone.
Kod i dokumentacja

src/factory.ts · services/schedulerService.ts

Co sprawdzić przed uruchomieniem

Zatrzymaj workera, przerwij połączenie z dostawcą i odtwórz kopię w środowisku testowym. Sprawdź, jak wykryjesz błąd, kto dostanie powiadomienie i jakie dane są potrzebne do wznowienia pracy. Osobno uwzględnij kopie aplikacji, bazy, plików i kluczy.

Kod i dokumentacja

src/factory.ts

Źródła

Kod Open Mercato użyty w opisach