У меня есть успокаивающая служба, вызывающая внешнюю службу с помощью клиента Spring Cloud Feign.
@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);
}
Я заметил в своем лог-файле 3-4 раза за последние 3 месяца следующие ошибки:
json.ERROR_RESPONSE_BODY: в соединении отказано при выполнении POST http://external-service/external/payments json.message: Отправить платеж Добавить платеж Ошибка По другой причине: {ERROR_RESPONSE_BODY = В соединении отказано при выполнении POST http://external-service/external/payments, EVENT = ADD_PAYMENT_FAILURE, TRANSACTION_ID = XXXXXXX} {} json.EVENT: ADD_PAYMENT_FAILURE json.stack_trace: feign.RetryableException: в соединении отказано при выполнении POST http://external-service/external/payments на feign.FeignException.errorExecuting (FeignException.java:67) на feign.SynchronousMethodHandler.executeAndDecode (SynchronousMethodHandler.java:104) на feign.SynchronousMethod .invoke (SynchronousMethodHandler.java:76) в feign.ReflectiveFeign $ FeignInvocationHandler.invoke (Reflectiv eFeign.java:103)
Можно ли добавить Spring Retry в клиент Feign. То, что я хотел аннотировать addPayment
операцию с помощью
@Retryable(value = {feign.RetryableException.class }, maxAttempts = 3, backoff = @Backoff(delay = 2000, multiplier=2))
Но это невозможно, какие еще варианты у меня есть?