diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md index 35649c3..df1afac 100644 --- a/docs/RELEASE-NOTES.md +++ b/docs/RELEASE-NOTES.md @@ -50,6 +50,7 @@ - RECOLLECT 모드에서 Tasklet 자체 스킵으로 last_success_date 복원 로직 제거 (#50) - Quartz PostgreSQLDelegate BYTEA 컬럼 읽기 오류 수정 (#12) - CronPreview step=0 무한루프 방지 +- AIS WebClient 버퍼 제한 50MB→100MB 확대 및 타임아웃 설정 추가 (DataBufferLimitException 해결) - ShipDetailUpdateDataReader beforeFetch에서 allImoNumbers 미할당으로 인한 NPE 수정 ### 변경 diff --git a/src/main/java/com/snp/batch/global/config/MaritimeApiWebClientConfig.java b/src/main/java/com/snp/batch/global/config/MaritimeApiWebClientConfig.java index 2ce50e5..96abce1 100644 --- a/src/main/java/com/snp/batch/global/config/MaritimeApiWebClientConfig.java +++ b/src/main/java/com/snp/batch/global/config/MaritimeApiWebClientConfig.java @@ -84,12 +84,17 @@ public class MaritimeApiWebClientConfig { log.info("Base URL: {}", maritimeAisApiUrl); log.info("========================================"); + HttpClient httpClient = HttpClient.create() + .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10_000) // 연결 타임아웃 10초 + .responseTimeout(Duration.ofSeconds(60)); // 응답 대기 60초 + return WebClient.builder() + .clientConnector(new ReactorClientHttpConnector(httpClient)) .baseUrl(maritimeAisApiUrl) .defaultHeaders(headers -> headers.setBasicAuth(maritimeApiUsername, maritimeApiPassword)) .codecs(configurer -> configurer .defaultCodecs() - .maxInMemorySize(50 * 1024 * 1024)) // 50MB 버퍼 (AIS GetTargets 응답 ~20MB+) + .maxInMemorySize(100 * 1024 * 1024)) // 100MB 버퍼 .build(); }