fix(ais): AIS WebClient 버퍼 제한 초과(DataBufferLimitException) 수정 #68
@ -50,6 +50,7 @@
|
|||||||
- RECOLLECT 모드에서 Tasklet 자체 스킵으로 last_success_date 복원 로직 제거 (#50)
|
- RECOLLECT 모드에서 Tasklet 자체 스킵으로 last_success_date 복원 로직 제거 (#50)
|
||||||
- Quartz PostgreSQLDelegate BYTEA 컬럼 읽기 오류 수정 (#12)
|
- Quartz PostgreSQLDelegate BYTEA 컬럼 읽기 오류 수정 (#12)
|
||||||
- CronPreview step=0 무한루프 방지
|
- CronPreview step=0 무한루프 방지
|
||||||
|
- AIS WebClient 버퍼 제한 50MB→100MB 확대 및 타임아웃 설정 추가 (DataBufferLimitException 해결)
|
||||||
- ShipDetailUpdateDataReader beforeFetch에서 allImoNumbers 미할당으로 인한 NPE 수정
|
- ShipDetailUpdateDataReader beforeFetch에서 allImoNumbers 미할당으로 인한 NPE 수정
|
||||||
|
|
||||||
### 변경
|
### 변경
|
||||||
|
|||||||
@ -84,12 +84,17 @@ public class MaritimeApiWebClientConfig {
|
|||||||
log.info("Base URL: {}", maritimeAisApiUrl);
|
log.info("Base URL: {}", maritimeAisApiUrl);
|
||||||
log.info("========================================");
|
log.info("========================================");
|
||||||
|
|
||||||
|
HttpClient httpClient = HttpClient.create()
|
||||||
|
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10_000) // 연결 타임아웃 10초
|
||||||
|
.responseTimeout(Duration.ofSeconds(60)); // 응답 대기 60초
|
||||||
|
|
||||||
return WebClient.builder()
|
return WebClient.builder()
|
||||||
|
.clientConnector(new ReactorClientHttpConnector(httpClient))
|
||||||
.baseUrl(maritimeAisApiUrl)
|
.baseUrl(maritimeAisApiUrl)
|
||||||
.defaultHeaders(headers -> headers.setBasicAuth(maritimeApiUsername, maritimeApiPassword))
|
.defaultHeaders(headers -> headers.setBasicAuth(maritimeApiUsername, maritimeApiPassword))
|
||||||
.codecs(configurer -> configurer
|
.codecs(configurer -> configurer
|
||||||
.defaultCodecs()
|
.defaultCodecs()
|
||||||
.maxInMemorySize(50 * 1024 * 1024)) // 50MB 버퍼 (AIS GetTargets 응답 ~20MB+)
|
.maxInMemorySize(100 * 1024 * 1024)) // 100MB 버퍼
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user