Ich benutze Netflix Feign Aufruf einer Operation eines Microservice A an eine andere Operation eines Microservices B, der einen Code mit Spring Boot validiert.
Die Operation von Microservice B löst eine Ausnahme aus, wenn die Validierung schlecht war. Dann behandelte ich in den Microservices und gebe ein HttpStatus.UNPROCESSABLE_ENTITY
(422) wie folgt zurück:
Also, wenn Microservice A in einer Schnittstelle als nächstes zu B aufruft:
%Vor%und die Validierung schlägt fehl Es wird ein interner Fehler 500 mit der nächsten Nachricht zurückgegeben:
%Vor%Aber ich muss dasselbe wie die Microservice-Operation B zurückgeben.
Was wären die besten Wege oder Techniken, um Status und Ausnahmen durch Microservices mit Netflix Feign zu propagieren?
Sie könnten ein Feign ErrorDecoder
Hier ist ein Beispiel
%Vor%Um den ErrorDecoder im Frühling aufzunehmen, müssen Sie ihn auf den ApplicationContext setzen:
%Vor%Shameless-Plug für eine kleine Bibliothek, die ich verwendet habe, die Reflektion verwendet, um geprüfte Ausnahmen (basierend auf einem Fehlercode, der im Hauptteil der Antwort zurückgegeben wird) dynamisch erneut auszulösen (und nicht aktiviert, wenn sie sich auf der Feign-Schnittstelle befinden).
Weitere Informationen zur Readme-Datei: Ссылка
Was wir tun, ist wie folgt:
Gemeinsame jar teilen, die Ausnahmen mit beiden Microservices enthält.
1.) In Microservices Eine Konvertierungs-Ausnahme in eine DTO-Klasse kann sagen, ErrorInfo. Diese enthält alle Attribute Ihrer benutzerdefinierten Ausnahme mit einem String exceptionType, der den Namen der Ausnahmeklasse enthält.
2.) Wenn es bei Microservice B empfangen wird, wird es von ErrorDecoder in Microservice B behandelt und es wird versucht, ein Ausnahmeobjekt von AusnahmeTyp wie folgt zu erstellen:
%Vor%Tags und Links java spring spring-boot netflix-feign microservices