私は私のログファイルに次の障害に最後の3ヶ月で3〜4回に気づい春クラウド装うクライアント装うクライアントと春のリトライ
@FeignClient(name = "external-service", configuration = FeignClientConfig.class)
public interface ServiceClient {
@RequestMapping(value = "/test/payments", method = RequestMethod.POST)
public void addPayment(@Valid @RequestBody AddPaymentRequest addPaymentRequest);
@RequestMapping(value = "/test/payments/{paymentId}", method = RequestMethod.PUT)
public ChangePaymentStatusResponse updatePaymentStatus(@PathVariable("paymentId") String paymentId,
@Valid @RequestBody PaymentStatusUpdateRequest paymentStatusUpdateRequest);
}
を使用して外部サービスを呼び出す安らかなサービスがあります。
をjson.ERROR_RESPONSE_BODY:支払いを送信 他の理由でお支払いの失敗を追加します:{ERROR_RESPONSE_BODY =接続 はPOSTの実行を拒否した接続がPOST http://external-service/external/payments json.messageを実行して拒否しました210、 EVENT = ADD_PAYMENT_FAILURE、TRANSACTION_ID = XXXXXXX} {} json.EVENT:ADD_PAYMENT_FAILURE json.stack_trace:feign.RetryableException:Connectionは でfeign.FeignException.errorExecuting(FeignException.java:67)でPOST http://external-service/external/paymentsを実行 を拒否feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104) でfeign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) でfeign.ReflectiveFeign $ FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
Spring RetryをFeignクライアントに追加することは可能ですか? 私は
@Retryable(value = {feign.RetryableException.class }, maxAttempts = 3, backoff = @Backoff(delay = 2000, multiplier=2))
でaddPayment
操作に注釈を付けるたかったが、これが不可能である何、私は他のどのような選択肢がありますか?
例を操作するため、このGithub implementationは、カスタムRetryerを示すコードサンプルを指すことはできますか?再試行の間にfeign.Retryableとmax attempt = 3とバックオフ期間の再試行を設定する方法 – Satya
独自のリリースを実装することができます – Jeff