UMS File Pitcher는 UMS(Universal Message Service) 플랫폼의 파일 처리기로, 지정된 디렉토리에서 파일을 감지하여 다양한 처리 모듈을 통해 UMS로 전송하는 역할을 합니다. 이 프로젝트는 Java 8 기반으로 개발되었으며, Maven으로 빌드 관리됩니다.
ums-file-pitcher/
├── pom.xml # Maven 빌드 설정 (v3.6.1.1)
├── conf/ # 설정 파일 디렉토리
│ ├── config.json # 메인 설정 파일
│ ├── logback.xml # 로그 설정
│ ├── logback_production.xml # 운영 환경 로그 설정
│ ├── mybatis-config.xml # MyBatis DB 설정
│ └── sqlmap/ # SQL 매핑 파일
├── src/main/java/kr/uracle/ums/fpc/
│ ├── PitcherManager.java # 메인 실행 클래스
│ └── module/
│ ├── detect/ # 파일 감지 모듈
│ │ ├── BasicDetect.java # 기본 파일 감지 (폴링 방식)
│ │ └── ErrorLogWatcher.java # 에러 로그 감시 (WatchService)
│ ├── filter/ # 파일 필터 모듈
│ │ ├── ZeroFileFilter.java # 0바이트 파일 필터
│ │ └── OldFileFilter.java # 오래된 파일 필터
│ ├── pre/ # 전처리 모듈
│ │ └── RcvToPrcsFileMover.java # 파일 이동 전처리기
│ └── main/ # 본처리 모듈
│ └── UmsCsvSender.java # UMS CSV 발송 모듈
├── sample/ # 샘플 파일
└── shell/ # 실행 스크립트
PitcherManager.java는 프로젝트의 메인 진입점입니다.
주요 기능:
ConfigManager를 통해 config.json 설정 파일 로드Pitcher 스레드 생성 및 관리TcpAliveConManager를 통한 UMS 서버 연결 상태 모니터링TpsManager를 통한 성능 지표 전송실행 흐름:
DETECT (감지) → FILTER (필터) → PREMODULE (전처리) → MAINMODULE (본처리) → POSTMODULE (후처리)
WATCH_TIME(기본 15초) 이상 변경 없는 파일을 처리 대상으로 반환WATCH_TIME: 파일 감시 시간 (기본 15000ms)PATTERN: 파일명 정규식 패턴false 반환 시 ERROR_PATH로 파일 이동EXPIRY_TIME: 만료 시간 (기본 72460601000ms)DATE_PATTEN: 날짜 포맷 (예: yyyyMMdd_HHmmss)CSV_PATH: CSV 파일 저장 경로 (절대경로)HEADER_LIST: CSV 헤더 목록DELIMITER: 데이터 구분자 (기본: |)URL: UMS CSV 발송 URLTRANS_TYPE: 전송 유형 (REAL/BATCH)config.json의 주요 설정 항목:
| 설정 항목 | 설명 | 필수 |
|---|---|---|
BASE_PATH |
처리 파일 기준 디렉토리 | Y |
MYBATIS_PATH |
MyBatis 설정 파일 경로 | N |
UMS_IPADREESS |
UMS 서버 URL 목록 | N |
UMS_MONIT |
모니터링 설정 | N |
DUPLEX |
이중화 설정 | N |
ALARM |
알람 설정 | N |
PITCHERS |
피처 설정 목록 | Y |
"A_PITCHER": {
"DETECT_PATH": "/data/RECEIVE",
"PROCESS_PATH": "PROCESS",
"SUCCESS_PATH": "SUCCESS",
"ERROR_PATH": "ERROR",
"MAX_THREAD": 10,
"CYCLE": 3000,
"DETECTION": { "CLASS_NAME": "kr.uracle.ums.fpc.module.detect.BasicDetect" },
"FILTER": { "CLASS_NAME": "kr.uracle.ums.fpc.module.filter.ZeroFileFilter" },
"PREMODULE": { "CLASS_NAME": "kr.uracle.ums.fpc.module.pre.RcvToPrcsFileMover" },
"MAINMODULE": { "CLASS_NAME": "kr.uracle.ums.fpc.module.main.UmsCsvSender" }
}
이중화 구현:
EXPIRY_TIME(기본 120초) 동안 마스터 파일이 업데이트되지 않으면 슬레이브가 마스터로 전환# 빌드
mvn clean install
# 실행
java -jar target/ums-file-pitcher-3.6.1.1.jar [configPath] [charSet]
# 또는 쉘 스크립트 사용
./shell/FILE_PITCHER.sh
┌─────────────────┐
│ DETECT_PATH │ (파일 감지 - BasicDetect)
└────────┬────────┘
↓
┌─────────────────┐
│ FILTER │ (필터링 - ZeroFileFilter, OldFileFilter)
└────────┬────────┘
↓
┌─────────────────┐
│ PREMODULE │ (전처리 - 파일 이동)
└────────┬────────┘
↓
┌─────────────────┐
│ MAINMODULE │ (본처리 - UmsCsvSender: CSV 변환 및 UMS 전송)
└────────┬────────┘
↓
┌────┴────┐
↓ ↓
SUCCESS ERROR
PATH PATH
UMS File Pitcher는 모듈화된 아키텍처를 통해 유연한 파일 처리 파이프라인을 제공합니다.
이 프로젝트는 대용량 파일 처리가 필요한 UMS 플랫폼 환경에서 효율적으로 동작하도록 설계되었습니다.