Skip to content

Latest commit

 

History

History
71 lines (54 loc) · 2.61 KB

README.md

File metadata and controls

71 lines (54 loc) · 2.61 KB

FTL Microservice Integration Helper Lib

Помощник в интеграции с Kafka и Feign

Feign


Начиная с 1.8 версии в модулях feign-commons и feign-secure-commons реализованы стандартные обработчики ошибок и конфигурация feign

Модуль без интеграции сервиса авторизации

<dependency>
    <groupId>io.foodtechlab.mih</groupId>
    <artifactId>feign-commons</artifactId>
    <version>${feign-helper.version}</version>
</dependency>

Модуль для sdk с нашей системой авторизации

<dependency>
    <groupId>io.foodtechlab.mih</groupId>
    <artifactId>feign-secure-commons</artifactId>
    <version>${feign-helper.version}</version>
</dependency>

Использование

Подразумевается что вы будете использовать базовую конфигурацию дополняя её своей.

В первую очередь вы должны дополнить ExampleErrorDecoder обработкой своих ошибок. Как правило, этого не требуется, но вы так же можете переопределить методы decode для того чтоб ваш ErrorDecoder выбрасывал ваши Exception

public class CategoryRequestErrorDecoder extends ExampleErrorDecoder {
    public CategoryRequestErrorDecoder(ObjectMapper mapper, AccessTokenService accessTokenService) {
        super(mapper, accessTokenService);
    }
}

Во вторых вы должны дополнить свой конфиг унаследовав его от базового. Чаще всего нужно просто указать там бин для ErrorDecoder, но вы так же можете регистрировать любые бины необходимые для работы feign

public class CategoryRequestConfig extends ExampleSecureConfig {
    @Bean
    public ErrorDecoder feignErrorDecoder(
            ObjectMapper mapper,
            AccessTokenService accessTokenService
    ) {
        return new CategoryRequestErrorDecoder(mapper, accessTokenService);
    }
}

После этого вы можете применить ваши конфиги объявляя sdk

@FeignClient(name = "feedback-category-request-sdk-client", url = "${foodtechlab.infrastructure.microservice.feedback.url}", configuration = CategoryRequestConfig.class)
public interface CategoryRequestClient extends CategoryRequestResource {
}