Feign ErrorDecoder не вызывается - PullRequest
0 голосов
/ 18 января 2019

Здравствуйте, я создал простой ErrorDecoder, но он не вызывается:

Конфигурация:

@Bean
UserClient userClient ( @Value( "${url}" ) final String url )
{
    return Feign
            .builder()
            .client( new OkHttpClient() )
            .errorDecoder( new FeignErrorDecoder() )
            .encoder( new GsonEncoder() )
            .decoder( new GsonDecoder() )
            .logger( new Slf4jLogger( UserClient.class ) )
            .logLevel( Level.FULL )
            .target( UserClient.class, url );
}

ErrorDecoder:

@Slf4j
public class FeignErrorDecoder implements ErrorDecoder
{
    @Override
    public Exception decode ( String methodKey, Response response )
    {
        if(response.status() != 200) {
            log.error( "ERROR" );
        }
        return errorStatus(methodKey, response);
    }
}

Затем трассировка стека показывает активацию RetryableException, и я нигде не вижу свой журнал. Я делаю что-то не так?

1 Ответ

0 голосов
/ 20 мая 2019

Декодеры ошибок запускаются только тогда, когда получен ответ, а код ответа не равен 2xx. Декодеры ошибок не вызываются в случае сбоя запроса, поскольку максимальное количество повторных попыток исчерпано. В этом случае исключение выдается вызывающему методу.

Если вы хотите применить логику во время повторной попытки, вам потребуется указать свой Retryer в дополнение к ErrorDecoder

...