Feign Client - 디버그
- application.yml Debug 레벨 설정 한다.
- applition에 feign client log bean을 등록을 한다.
applition.yml - debug레벨 설정
logging:
level:
com.gugbab.gugbabservices.client: DEBUG
application - bean 등록
package com.gugbab.gugbabservices;
import ...
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class GugbabServicesApplication {
...
// feign Client 로거 등록
@Bean
public Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
Feign Client - 예외처리
- 일반적인 예외 처리랑 똑같다. (FeignException 객체 넘어옴)
// feign Client 사용
StarsResponse stars = null;
try{
stars = vocaServicesClient.getStarsByUser(userId,headers);
}catch (FeignException feignException){
log.error(feignException.getMessage());
}
Feign Client - Error Decoder 사용
- Bean에 등록해 돼지만 Enviroment 주입받기 위해 @Component 사용
- MethodKey를 통해 특정 Feign 요청에 대해서만 처리가능
package com.gugbab.gugbabservices.error;
import ...
@Component
public class FeignErrorDecoder implements ErrorDecoder {
Environment env;
@Autowired
public FeignErrorDecoder(Environment env) {
this.env = env;
}
@Override
public Exception decode(String methodKey, Response response) {
switch (response.status()) {
case 400:
break;
case 404:
// getStarsByUser 메소드에 대해서만 에러 처리
if (methodKey.contains("getStarsByUser")) {
return new ResponseStatusException(HttpStatus.valueOf(response.status()),
env.getProperty("gugbab.public.error.star_empty"));
}
break;
default:
return new Exception(response.reason());
}
return null;
}
}
Feign Client - Error Decoder 사용 예시
- 따로 예외 처리 해줄필요 없음
// 예외 처리 FeignErrorDecoder로 처리함
StarsResponse stars = vocaServerClient.getStarsByUser(userId,headers);
'MSA' 카테고리의 다른 글
[MSA]Kafka Topic이란? zookeeper,Kafka Topic example (0) | 2023.05.01 |
---|---|
[MSA] Apache Kafka란? Kafka 장단점 (0) | 2023.04.29 |
[MSA] Spring Boot - Feign Client 란? Rest Api 호출 (0) | 2023.04.24 |
[MSA] Spring Boot - RestTemplate 란? 사용 (0) | 2023.04.23 |
[MSA]Spring Boot - Config-server 대칭키 사용 (0) | 2023.04.14 |