Spring Cloud Netflixを運用環境に移行しようとしています。今のところ、ビジネスロジックのエラー処理に関する問題が発生しています。Spring Cloud Netflix:Feignによるリモートサービスのエラー処理
私たちはHTTP RESTクライアントとしてFeignを使用しています。マイクロサービスAは、異なるJVM(または物理サーバ)に配備されたマイクロサービスBを呼び出す必要があります。マイクロサービスBは、ビジネスに属するエラーメッセージを返すことがあります。例えば、AはBからの注文情報を照会する必要があるが、注文IDは存在しないので、Bはこの注文が存在しないことを示すエラーメッセージを返さなければならない。 Aはerorrsがある場合、コードは次のコードのようになります決定するためにリターン・メッセージからif-else
判断を行う必要があります。
//remoteServiceA is an interface annotated with @FeignClient
resultA = remoteServiceA.foo();
if (resultA.hasError) {
} else {
}
resultB = remoteServiceB.foo();
if (resultB.hasError) {
} else {
}
// ... ...
それは十分に優雅ではありませんようにif-else
そう多くはあります。私たちが望むのは、remoteServieA.foo()
は、OrderNotExistException
のような自己定義の実行時例外を投げることができるということです。この目標を達成するためのあらゆるアイデア?
真実のREST APIでは、返されるHTTPエラーコードは自明である必要があります。したがって、注文(リソース)を照会して404を取得した場合、「リソースが見つかりません」という意味で「注文が見つかりません」という意味です。 – cherit