RestTemplateConfig 수정, 추론실행 수정
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
package com.kamco.cd.kamcoback.config.resttemplate;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.client.BufferingClientHttpRequestFactory;
|
||||
import org.springframework.http.client.SimpleClientHttpRequestFactory;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Log4j2
|
||||
@@ -18,8 +20,12 @@ public class RestTemplateConfig {
|
||||
baseFactory.setConnectTimeout(2000);
|
||||
baseFactory.setReadTimeout(3000);
|
||||
|
||||
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
|
||||
jsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
|
||||
|
||||
return builder
|
||||
.requestFactory(() -> new BufferingClientHttpRequestFactory(baseFactory))
|
||||
.messageConverters(jsonConverter)
|
||||
.additionalInterceptors(new RetryInterceptor())
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package com.kamco.cd.kamcoback.config.resttemplate;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.http.HttpRequest;
|
||||
import org.springframework.http.client.ClientHttpRequestExecution;
|
||||
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
|
||||
@Log4j2
|
||||
public class RetryInterceptor implements ClientHttpRequestInterceptor {
|
||||
|
||||
private static final int MAX_RETRY = 3;
|
||||
@@ -20,21 +23,25 @@ public class RetryInterceptor implements ClientHttpRequestInterceptor {
|
||||
|
||||
for (int attempt = 1; attempt <= MAX_RETRY; attempt++) {
|
||||
try {
|
||||
// HTTP 응답을 받으면(2xx/4xx/5xx 포함) 그대로 반환
|
||||
return execution.execute(request, body);
|
||||
log.info("[WIRE-REQ] {} {}", request.getMethod(), request.getURI());
|
||||
log.info("[WIRE-REQ-HEADERS] {}", request.getHeaders());
|
||||
log.info("[WIRE-REQ-BODY] {}", new String(body, StandardCharsets.UTF_8));
|
||||
|
||||
ClientHttpResponse response = execution.execute(request, body);
|
||||
|
||||
log.info("[WIRE-RES-STATUS] {}", response.getStatusCode());
|
||||
return response;
|
||||
|
||||
} catch (IOException e) {
|
||||
// 네트워크/타임아웃 등 I/O 예외만 재시도
|
||||
lastException = e;
|
||||
log.error("[WIRE-IO-ERR] attempt={} msg={}", attempt, e.getMessage(), e);
|
||||
}
|
||||
|
||||
// 마지막 시도가 아니면 대기
|
||||
if (attempt < MAX_RETRY) {
|
||||
sleep();
|
||||
}
|
||||
}
|
||||
|
||||
// 마지막 예외를 그대로 던져서 원인이 로그에 남게 함
|
||||
throw lastException;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user