Ich habe eine Anwendung mit einer Microservices-Architektur entwickelt. Jeder Microservice ist eine Spring-Boot-Anwendung, die über die FeignClient-Schnittstelle mit anderen kommuniziert.Wie man Inter-Service-Ausnahme in einer Feder-basierten Microservices-Architektur korrekt behandelt
Lassen Sie A, ein Microservice (RestAPI), der Microservice B aufruft. Unter normalen Bedingungen antwortet B mit einem Objekt X, das ist die JSON-Antwort, die A Client bedient.
Aber, wenn B eine Ausnahme auslöst, erhalte ich eine chinesisch-Box Ausnahme an den Client wie folgt aus:
{
"timestamp": 1511965051071,
"status": 500,
"error": "Internal Server Error",
"exception": "Exception",
"message": { "\"timestamp\":1511965051052,\"status\":422,\"error\":\"Unprocessable Entity\",\"exception\":\"java.lang.MyException\",\"message\":\"Error message from B\",\"path\":\"PATH-OF-B-SERVICE\"}",
"path": "PATH-OF-A-SERVICE"
}
Mit anderen Worten, MyException (Stand 422) "eingebettet" ist in A-Exception (Status 500).
würde Ich mag den Client mit dem inneren JSON antworten, das heißt:
{
"timestamp": 1511965051052,
"status": 422,
"error": "Unprocessable Entity",
"exception": "java.lang.MyException",
"message": "ErrormessagefromB",
"path": "PATH-OF-B-SERVICE"
}
Wie kann ich das tun?