전문 해석기 배치 - File Line to Domain Model 변환
전문 해석 시 고려해야 하는 것들은, align, padding, trim, 날짜 포맷, 숫자 포맷 변환 등이다. 문자 타입은 끝문자 trim 정도만 처리하면 제대로 매핑되지만, 날짜, 숫자 포맷은 전문 송신처에 따라 포맷이 각각 달라 디테일한 처리가 필요하다. e.g., 0.8%을 어디서는 00080000 으로 보내고, 어디서는 00.80으...
전문 해석 시 고려해야 하는 것들은, align, padding, trim, 날짜 포맷, 숫자 포맷 변환 등이다. 문자 타입은 끝문자 trim 정도만 처리하면 제대로 매핑되지만, 날짜, 숫자 포맷은 전문 송신처에 따라 포맷이 각각 달라 디테일한 처리가 필요하다. e.g., 0.8%을 어디서는 00080000 으로 보내고, 어디서는 00.80으...
RecordFieldSetMapper로 모든 케이스의 전문 변환이 커버 가능할까? => 아니다. public interface ConversionService { override fun convert(source: Any?, sourceType: TypeDescriptor?, targetType: TypeDescriptor): Any? ...
상황 1) 외부 API 요청에 대한 응답 수신 코드로 enum을 쓰는게 좋을까? [!tip] 요약 ) 외부 API 요청에 대한 응답 코드는 String으로 정의하고 enum 변환하는게 더 유연하고 안전하다. (fault tolerance) enum에 정의 되어 있지 않은 값이 응답 코드로 들어올 수 있기 때문이다. (e.g., 예고 없이 갑자기...
LineMapper는 크게 Tokenizer와 FieldSetMapper로 이루어진다. 전문 특성상 LineMapper로는PatternMatchingCompositeLineMapper 를 Tokeinizer로는 FixedLengthTokenizer를 사용하면 되는데 FieldSetMapper로는 세 가지 선택지가 있다. BeanWrapperFi...
전문은 line의 맨 처음 시작 문자 (H, D, T 등)에 따라서 라인의 포맷, 필드가 달라진다. 배치에서 파일을 읽어와 맨 처음 시작 문자를 보고, 적절하게 분기해서 lineMapping 해야 하는 상황이었다. 기존 코드에서는 FlatFileItemReader를 상속한 TelegramFileItemReader가 있고, 여기서 LineMapper들...
요약 ) 동작 중 서버 다운에 대한 대책. exactly once가 가능하려면… 동작 수행과 수행 결과에 대한 저장이 transaction이나 atomic으로 이루어 질 수 있어야 한다 원격지 서버 API 요청 동작 시, 네트워크 장애에 대한 대책. exactly once가 가능하려면… ...
SpringBoot 안쓰는 경우 - CommandLineJobRunner 공식 docs 참고 -https://docs.spring.io/spring-batch/docs/4.3.6/reference/html/job.html#runningAJob https://kwonnam.pe.kr/wiki/springframework/batch/comman...
https://www.baeldung.com/spring-boot-3-migration#spring-batch 6.1. @EnableBatchProcessing Discouraged Previously, we could enable Spring Batch’s auto-configuration, annotating a configuration clas...
공통 비즈니스 로직을 처리하려면 결과적으로 외부 API 응답(JSON)을 Domain Model로 변환해야 한다. 외부 API에서 받아온 데이터가 공통 비즈니스 로직까지 도달하기 전 거쳐가는 layer는 아래와 같다. 아래 과정 중 어디선가는 Domain Model로의 변환을 수행해 주어야 한다. Business Layer(Service class) ...
대규모시스템개발 #3 참고 7장. 분산 시스템을 위한 유일 ID 생성기 설계 참고 요구사항 유일해야 함. 시간 순으로 정렬 가능해야 함. (단 아주 작은 time slot 안에서는 순서가 보장되지 않아도 상관 없음) 숫자로만 구성되어야 함. DB 1대의 auto increment로 커버 불가한 규모. 분산DB 사용 중이라...