From eb81be5f21c81ebc2583d06047b203c7e42fe3dc Mon Sep 17 00:00:00 2001 From: hyojin kim Date: Wed, 10 Dec 2025 10:54:44 +0900 Subject: [PATCH] =?UTF-8?q?:card=5Ffile=5Fbox:=20application.xml=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 62 +++++++++++---- src/main/resources/application-prod.yml | 42 +++++++++- src/main/resources/application-qa.yml | 101 ------------------------ src/main/resources/application.yml | 2 +- 4 files changed, 86 insertions(+), 121 deletions(-) delete mode 100644 src/main/resources/application-qa.yml diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4987575..a3d3ef9 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,9 +4,9 @@ spring: # PostgreSQL Database Configuration datasource: - url: jdbc:postgresql://10.26.252.39:5432/mdadb?currentSchema=snp_data - username: mda - password: mda#8932 + url: jdbc:postgresql://211.208.115.83:5432/snpdb?currentSchema=snp_data,public + username: snp + password: snp#8932 driver-class-name: org.postgresql.Driver hikari: maximum-pool-size: 10 @@ -57,7 +57,7 @@ spring: server: port: 8041 servlet: - context-path: / + context-path: /snp-api # Actuator Configuration management: @@ -69,18 +69,9 @@ management: health: show-details: always -# Logging Configuration +# Logging Configuration (logback-spring.xml에서 상세 설정) logging: - level: - root: INFO - com.snp.batch: DEBUG - org.springframework.batch: DEBUG - org.springframework.jdbc: DEBUG - pattern: - console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" - file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" - file: - name: logs/snp-batch.log + config: classpath:logback-spring.xml # Custom Application Properties app: @@ -100,3 +91,44 @@ app: 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만 건 + + # ClassType 분류 설정 + class-type: + refresh-hour: 4 # Core20 캐시 갱신 시간 (기본: 04시) + + # Core20 캐시 테이블 설정 (환경별로 테이블/컬럼명이 다를 수 있음) + core20: + schema: snp_data # 스키마명 + table: core20 # 테이블명 + imo-column: ihslrorimoshipno # IMO/LRNO 컬럼명 (PK, NOT NULL) + mmsi-column: maritimemobileserviceidentitymmsinumber # MMSI 컬럼명 (NULLABLE) + + # 파티션 관리 설정 + 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일 보관 \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 623f54e..c202e03 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -55,7 +55,7 @@ spring: # Server Configuration server: - port: 9000 + port: 8041 servlet: context-path: /snp-api @@ -94,9 +94,43 @@ app: 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만 건 + + # ClassType 분류 설정 + class-type: + refresh-hour: 4 # Core20 캐시 갱신 시간 (기본: 04시) + # Core20 캐시 테이블 설정 (환경별로 테이블/컬럼명이 다를 수 있음) core20: - schema: new_snp # 스키마명 + schema: snp_data # 스키마명 table: core20 # 테이블명 - imo-column: lrno # IMO/LRNO 컬럼명 (PK, NOT NULL) - mmsi-column: mmsi # MMSI 컬럼명 (NULLABLE) + imo-column: ihslrorimoshipno # IMO/LRNO 컬럼명 (PK, NOT NULL) + mmsi-column: maritimemobileserviceidentitymmsinumber # MMSI 컬럼명 (NULLABLE) + + # 파티션 관리 설정 + 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일 보관 \ No newline at end of file diff --git a/src/main/resources/application-qa.yml b/src/main/resources/application-qa.yml deleted file mode 100644 index 03f8e3b..0000000 --- a/src/main/resources/application-qa.yml +++ /dev/null @@ -1,101 +0,0 @@ -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: true - properties: - hibernate: - dialect: org.hibernate.dialect.PostgreSQLDialect - format_sql: true - default_schema: snp_data - - # Batch Configuration - batch: - jdbc: - 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: / - -# Actuator Configuration -management: - endpoints: - web: - exposure: - include: health,info,metrics,prometheus,batch - endpoint: - health: - show-details: always - -# Logging Configuration -logging: - level: - root: INFO - com.snp.batch: DEBUG - org.springframework.batch: DEBUG - org.springframework.jdbc: DEBUG - pattern: - console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" - file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" - file: - name: logs/snp-batch.log - -# 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 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6950fe3..3431086 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,7 +4,7 @@ spring: # PostgreSQL Database Configuration datasource: - url: jdbc:postgresql://211.208.115.83:5432/snpdb + url: jdbc:postgresql://211.208.115.83:5432/snpdb?currentSchema=snp_data,public username: snp password: snp#8932 driver-class-name: org.postgresql.Driver