Microservices Exception Handling

Microservices Exception Handling
DA
  • Rejestracja: dni
  • Ostatnio: dni
0

Zastanawiam się jak powinna wyglądać prawidłowa implementacja wyjątków przy strukturze mikroserwisów tzn.
Załóżmy , że mamy 3 serwisy :
API - serwis wejściowy bez większej logiki biznesowej. Posiada restController, który zwraca ResponseEntity i jedyną rzeczą jaką robi to strzela do LogicSerwisu
LogicSerwis - serwis w którym jest cała logika biznesowa dopełnienie obiektu, pobieranie z bazy danych, wrzucanie na kolejkę itp. I żeby zwrócić response do API ten serwis uderza do kolejnego serwisu FillObject.
FillObject - serwis, który dostaje RQ z LogicSerwis uzupełnia obiekt dodatkowymi danymi i odsyła z powrotem.

Czy każdy z tych serwisów powinien mieć swoją własną fabrykę wyjątków ? czy wszystko powinno być w LogicSerwis bo to jest centrum wszystkiego? Jak powinny być zaimplementowane wyjątki tak żeby na samym końcu API zwróciło błąd, że np FillObject nie mógł napełnić obiektu.

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

A do czego te wyjątki chcesz używać?

DA
  • Rejestracja: dni
  • Ostatnio: dni
0

Do wyświetlania min błędów z połączeniem, złych RQ, braku dostępu do zasobu ale również chce wyświetlać takie informację jak brak obiektu w bazie o podanym id, błędy walidacji. ResponseEntity zwraca mój obiekt response dlatego zastanawiam się czy tam nie wrzucić jakiejś listy z error i na każdym etapie jezeli coś by się działo dorzucać do listy a pozniej jak wróci do API bedzie lista error, które po prostu wyświetle.

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

Poczytaj sobie to i to

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1907
0

Są tutaj 2 kwestie. Po pierwsze mikroserwisy i bounded conteksty - usługa A nie powinna wnikać w bebechy usługi B. Może sprawdzić, co nie zabanglało, ale nie powinna kminić dlaczego. Druga sprawa - translacja błędów na wyjściu z systemu. Tutaj zależy, czy klientem jest jakiś frontend i przed tym stoi API gateway, czy jakaś zewnętrzna aplikacja. Tak czy inaczej, musi istnieć warstwa odcięcia, gdzie błędy z wewnątrz mapujemy na tzw. „published language” dla świata zewnętrznego (często będą tu nawet odstępstwa od reguł Rest).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.