fix(shipdetail): 기간 설정 재수집 시 RECOLLECT 모드 분기 오류 수정 #78
@ -38,6 +38,7 @@
|
|||||||
- 선박제원정보 수집 배치 작업 병렬화 (Partitioned Step) (#64)
|
- 선박제원정보 수집 배치 작업 병렬화 (Partitioned Step) (#64)
|
||||||
|
|
||||||
### 수정
|
### 수정
|
||||||
|
- 기간 설정 재수집 시 RECOLLECT 모드 분기 오류 수정 (#75)
|
||||||
- 자동 재수집 JobParameter 오버플로우 수정 (VARCHAR 2500 제한 해결)
|
- 자동 재수집 JobParameter 오버플로우 수정 (VARCHAR 2500 제한 해결)
|
||||||
- retryCount 세마틱 오류 수정 (0부터 시작, 재수집 실패 시 증가)
|
- retryCount 세마틱 오류 수정 (0부터 시작, 재수집 실패 시 증가)
|
||||||
- 실패 레코드 저장 타이밍 경합 해결 (동기 저장으로 변경)
|
- 실패 레코드 저장 타이밍 경합 해결 (동기 저장으로 변경)
|
||||||
|
|||||||
@ -28,7 +28,8 @@ import java.util.stream.Collectors;
|
|||||||
/**
|
/**
|
||||||
* 선박제원정보 변경 IMO 목록 조회 Tasklet.
|
* 선박제원정보 변경 IMO 목록 조회 Tasklet.
|
||||||
* NORMAL 모드: Maritime API에서 변경된 IMO 번호 조회
|
* NORMAL 모드: Maritime API에서 변경된 IMO 번호 조회
|
||||||
* RECOLLECT 모드: DB에서 실패 IMO 번호 조회
|
* RECOLLECT + 실패건 재수집(AUTO_RETRY/MANUAL_RETRY): DB에서 실패 IMO 번호 조회
|
||||||
|
* RECOLLECT + 기간 재수집(MANUAL 등): Maritime API에서 설정된 기간의 IMO 번호 조회
|
||||||
* 조회 결과를 JobExecutionContext에 저장하여 Partitioner가 사용할 수 있게 함.
|
* 조회 결과를 JobExecutionContext에 저장하여 Partitioner가 사용할 수 있게 함.
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -64,11 +65,17 @@ public class ShipDetailImoFetchTasklet implements Tasklet {
|
|||||||
String executionMode = jobExecution.getJobParameters()
|
String executionMode = jobExecution.getJobParameters()
|
||||||
.getString("executionMode", "NORMAL");
|
.getString("executionMode", "NORMAL");
|
||||||
|
|
||||||
|
String executor = jobExecution.getJobParameters().getString("executor", "");
|
||||||
|
boolean isFailedRecordRetry = "AUTO_RETRY".equals(executor) || "MANUAL_RETRY".equals(executor);
|
||||||
|
|
||||||
List<String> imoNumbers;
|
List<String> imoNumbers;
|
||||||
|
|
||||||
if ("RECOLLECT".equals(executionMode)) {
|
if ("RECOLLECT".equals(executionMode) && isFailedRecordRetry) {
|
||||||
|
// 실패건 재수집: DB에서 실패 IMO 조회
|
||||||
imoNumbers = fetchRecollectImoNumbers(jobExecution);
|
imoNumbers = fetchRecollectImoNumbers(jobExecution);
|
||||||
} else {
|
} else {
|
||||||
|
// NORMAL 모드 또는 기간 재수집: Maritime API에서 IMO 조회
|
||||||
|
// BatchDateService가 executionMode에 따라 적절한 날짜 범위를 결정
|
||||||
imoNumbers = fetchChangedImoNumbers(jobExecution);
|
imoNumbers = fetchChangedImoNumbers(jobExecution);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user