From 1d764188ebf370a99afd115ed516963857429497 Mon Sep 17 00:00:00 2001 From: HYOJIN Date: Wed, 18 Mar 2026 13:35:10 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(ais):=20AIS=20WebClient=20=EB=B2=84?= =?UTF-8?q?=ED=8D=BC=20=EC=A0=9C=ED=95=9C=20=EC=B4=88=EA=B3=BC(DataBufferL?= =?UTF-8?q?imitException)=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/global/config/MaritimeApiWebClientConfig.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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(); } From cb56dd2d2c5fb6c4edf2dde4417434d959448504 Mon Sep 17 00:00:00 2001 From: HYOJIN Date: Wed, 18 Mar 2026 13:35:35 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=EB=A6=B4=EB=A6=AC=EC=A6=88=20?= =?UTF-8?q?=EB=85=B8=ED=8A=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/RELEASE-NOTES.md | 1 + 1 file changed, 1 insertion(+) 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 수정 ### 변경