Background
Spring에 Feign을 사용하면서 성능과 가용성 향상을 위해 Apache HttpClient5의 connection pool을 사용할 수 있는 io.github.openfeign:feign-hc5 라이브러리를 사용했습니다.
이 때 주의해야 할 것이 있는데 해당 라이브러리에서 사용하는 feign.Response.Body에는 toString이 재정의되어 있지 않습니다.
Problem
feign에서 기본으로 제공하는 구현체에는 toString이 재정의되어 있어 문제가 없었지만 Custom ErrorDecoder에서 toString이 재정의되어 있다고 가정해서 사용하다 보니 문제가 되었었습니다.
feign.Logger.logAndRebufferResponse 에서 로깅 설정에 따라 Body를 toString이 재정의된 구현체로 바꾸어줍니다.
그렇기 때문에 log 설정에 따라 io.github.openfeign:feign-hc5 의 Response.Body 구현체를 toString 구현된 것처럼 사용해도 문제가 없기도 하고 문제가 생기기도 합니다.
Action Point
가장 좋은 것은 feign.Response.Body 의 인터페이스에 toString이 없으므로 구현체마다 다를 수 있다는 것을 알고 처리를 해 놓는 것이겠습니다.
https://github.com/OpenFeign/feign/blob/master/core/src/main/java/feign/Response.java
GitHub - OpenFeign/feign: Feign makes writing java http clients easier
Feign makes writing java http clients easier. Contribute to OpenFeign/feign development by creating an account on GitHub.
github.com
'트러블슈팅' 카테고리의 다른 글
[iOS] App Review Reject (1) | 2022.09.18 |
---|---|
[JAVA] Enum & Comparable (1) | 2022.09.04 |
Apache HttpClient 5 - pool re-use policy (0) | 2022.08.07 |
내부 API 호출 시에는 https(X), http(O) (0) | 2022.07.31 |
[React Native] iOS 한글 입력 문제 (0) | 2022.07.25 |