spring: application: name: snp-batch # PostgreSQL Database Configuration datasource: url: jdbc:postgresql://211.208.115.83:5432/snpdb username: snp password: snp#8932 driver-class-name: org.postgresql.Driver hikari: maximum-pool-size: 10 minimum-idle: 5 connection-timeout: 30000 # JPA Configuration jpa: hibernate: ddl-auto: update show-sql: false properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect format_sql: false default_schema: public # Batch Configuration batch: jdbc: table-prefix: "snp_data.batch_" initialize-schema: never # Changed to 'never' as tables already exist job: enabled: false # Prevent auto-run on startup # Thymeleaf Configuration thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html # Quartz Scheduler Configuration - Using JDBC Store for persistence quartz: job-store-type: jdbc # JDBC store for schedule persistence jdbc: initialize-schema: always # Create Quartz tables if not exist properties: org.quartz.scheduler.instanceName: SNPBatchScheduler org.quartz.scheduler.instanceId: AUTO org.quartz.threadPool.threadCount: 10 org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate org.quartz.jobStore.tablePrefix: QRTZ_ org.quartz.jobStore.isClustered: false org.quartz.jobStore.misfireThreshold: 60000 # Server Configuration server: port: 8041 servlet: context-path: /snp-api # Actuator Configuration management: endpoints: web: exposure: include: health,info,metrics,prometheus,batch endpoint: health: show-details: always # Logging Configuration (logback-spring.xml에서 상세 설정) logging: config: classpath:logback-spring.xml # Custom Application Properties app: batch: chunk-size: 1000 api: url: https://api.example.com/data timeout: 30000 ship-api: url: https://shipsapi.maritime.spglobal.com username: 7cc0517d-5ed6-452e-a06f-5bbfd6ab6ade password: 2LLzSJNqtxWVD8zC ais-api: url: https://aisapi.maritime.spglobal.com webservice-api: url: https://webservices.maritime.spglobal.com schedule: enabled: true cron: "0 0 * * * ?" # Every hour # AIS Target 배치 설정 ais-target: since-seconds: 60 # API 조회 범위 (초) chunk-size: 5000 # 배치 청크 크기 schedule: cron: "15 * * * * ?" # 매 분 15초 실행 # AIS Target 캐시 설정 ais-target-cache: ttl-minutes: 120 # 캐시 TTL (분) - 2시간 max-size: 300000 # 최대 캐시 크기 - 30만 건 # 파티션 관리 설정 partition: # 일별 파티션 테이블 목록 (네이밍: {table}_YYMMDD) daily-tables: - schema: snp_data table-name: ais_target partition-column: message_timestamp periods-ahead: 3 # 미리 생성할 일수 # 월별 파티션 테이블 목록 (네이밍: {table}_YYYY_MM) monthly-tables: [] # 현재 없음 # 기본 보관기간 retention: daily-default-days: 14 # 일별 파티션 기본 보관기간 (14일) monthly-default-months: 1 # 월별 파티션 기본 보관기간 (1개월) # 개별 테이블 보관기간 설정 (옵션) custom: # - table-name: ais_target # retention-days: 30 # ais_target만 30일 보관