Microservices Exception Handling

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.

0

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

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.

0

Poczytaj sobie to i to

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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1