캐시 기반 인메모리 다중 폴리곤 영역 내 선박 탐색 API 구현.
JTS STRtree + PreparedGeometry로 고속 공간 검색, ANY/ALL/SEQUENTIAL 3가지 모드 지원.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- IntegrationVesselService에 전용 DataSource 자체 생성/관리 추가
- vessel.integration.datasource.* 설정으로 별도 DB 연결 가능
- @PostConstruct에서 경량 HikariDataSource 생성 (max 3, min 1)
- 미설정 시 queryDataSource 자동 폴백 (기존 동작 유지)
- prod: 별도 DB (mdadb2 gis.t_ship_integration_sub) → 전용 DataSource
- dev/prod-mpr: queryDB signal 스키마 → queryDataSource 폴백
- 기존 DataSourceConfig 4개 파일 수정 없이 프로파일 완벽 호환
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1.1 + 1.2: WebSocket 리플레이 요청 동시 부하 제어
- ActiveQueryManager에 Fair Semaphore 기반 글로벌 동시 쿼리 제한 추가 (기본 30개)
- @Async 스트리밍 메서드 내에서 슬롯 획득 (인바운드 채널 블로킹 방지)
- 쿼리 완료/실패/취소 시 finally 블록에서 반드시 리소스 반환
- 글로벌 Semaphore 슬롯 반환
- 세션별 쿼리 카운트 감소 (기존 누락 수정)
- ActiveQueryManager 쿼리 정리
- TrackQueryInterceptor 세션 제한값 외부 설정화 (@Value)
- application-prod.yml에 websocket.query 설정 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>