feat(risk): RiskRangeImportJob API URL 변경 및 저장 테이블 통합 #87
@ -61,6 +61,7 @@
|
|||||||
- 실패 건 수동 재수집 시 414 Request-URI Too Long 오류 수정 (#71)
|
- 실패 건 수동 재수집 시 414 Request-URI Too Long 오류 수정 (#71)
|
||||||
|
|
||||||
### 변경
|
### 변경
|
||||||
|
- RiskRangeImportJob API URL 변경 및 저장 테이블 통합 (#86)
|
||||||
- RiskDetailImportJob IMO 조회 대상을 tb_ship_default_info로 변경 (#81)
|
- RiskDetailImportJob IMO 조회 대상을 tb_ship_default_info로 변경 (#81)
|
||||||
- 파티션 스텝 프로세스 공통 모듈화 (StringListPartitioner, BasePartitionedJobConfig, LastExecutionUpdateTasklet) (#73)
|
- 파티션 스텝 프로세스 공통 모듈화 (StringListPartitioner, BasePartitionedJobConfig, LastExecutionUpdateTasklet) (#73)
|
||||||
- 13개 Job Config의 인라인 LastExecutionUpdateTasklet을 공통 모듈로 교체 (#74)
|
- 13개 Job Config의 인라인 LastExecutionUpdateTasklet을 공통 모듈로 교체 (#74)
|
||||||
|
|||||||
@ -101,16 +101,21 @@ public class MaritimeApiWebClientConfig {
|
|||||||
@Bean(name = "maritimeServiceApiWebClient")
|
@Bean(name = "maritimeServiceApiWebClient")
|
||||||
public WebClient maritimeServiceApiWebClient(){
|
public WebClient maritimeServiceApiWebClient(){
|
||||||
log.info("========================================");
|
log.info("========================================");
|
||||||
log.info("Maritime AIS API WebClient 생성");
|
log.info("Maritime Service API WebClient 생성");
|
||||||
log.info("Base URL: {}", maritimeServiceApiUrl);
|
log.info("Base URL: {}", maritimeServiceApiUrl);
|
||||||
log.info("========================================");
|
log.info("========================================");
|
||||||
|
|
||||||
|
HttpClient httpClient = HttpClient.create()
|
||||||
|
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10_000)
|
||||||
|
.responseTimeout(Duration.ofMinutes(5));
|
||||||
|
|
||||||
return WebClient.builder()
|
return WebClient.builder()
|
||||||
|
.clientConnector(new ReactorClientHttpConnector(httpClient))
|
||||||
.baseUrl(maritimeServiceApiUrl)
|
.baseUrl(maritimeServiceApiUrl)
|
||||||
.defaultHeaders(headers -> headers.setBasicAuth(maritimeApiUsername, maritimeApiPassword))
|
.defaultHeaders(headers -> headers.setBasicAuth(maritimeApiUsername, maritimeApiPassword))
|
||||||
.codecs(configurer -> configurer
|
.codecs(configurer -> configurer
|
||||||
.defaultCodecs()
|
.defaultCodecs()
|
||||||
.maxInMemorySize(100 * 1024 * 1024)) // 100MB 버퍼
|
.maxInMemorySize(256 * 1024 * 1024)) // 256MB 버퍼
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import com.snp.batch.jobs.risk.batch.dto.RiskDto;
|
|||||||
import com.snp.batch.jobs.risk.batch.entity.RiskEntity;
|
import com.snp.batch.jobs.risk.batch.entity.RiskEntity;
|
||||||
import com.snp.batch.jobs.risk.batch.processor.RiskDataProcessor;
|
import com.snp.batch.jobs.risk.batch.processor.RiskDataProcessor;
|
||||||
import com.snp.batch.jobs.risk.batch.reader.RiskDataRangeReader;
|
import com.snp.batch.jobs.risk.batch.reader.RiskDataRangeReader;
|
||||||
import com.snp.batch.jobs.risk.batch.writer.RiskDataWriter;
|
import com.snp.batch.jobs.risk.batch.writer.RiskDetailDataWriter;
|
||||||
import com.snp.batch.service.BatchApiLogService;
|
import com.snp.batch.service.BatchApiLogService;
|
||||||
import com.snp.batch.service.BatchDateService;
|
import com.snp.batch.service.BatchDateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -35,7 +35,7 @@ import org.springframework.web.reactive.function.client.WebClient;
|
|||||||
public class RiskImportRangeJobConfig extends BaseMultiStepJobConfig<RiskDto, RiskEntity> {
|
public class RiskImportRangeJobConfig extends BaseMultiStepJobConfig<RiskDto, RiskEntity> {
|
||||||
private final WebClient maritimeServiceApiWebClient;
|
private final WebClient maritimeServiceApiWebClient;
|
||||||
private final RiskDataProcessor riskDataProcessor;
|
private final RiskDataProcessor riskDataProcessor;
|
||||||
private final RiskDataWriter riskDataWriter;
|
private final RiskDetailDataWriter riskDataWriter;
|
||||||
private final RiskDataRangeReader riskDataRangeReader;
|
private final RiskDataRangeReader riskDataRangeReader;
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
private final BatchDateService batchDateService;
|
private final BatchDateService batchDateService;
|
||||||
@ -61,7 +61,7 @@ public class RiskImportRangeJobConfig extends BaseMultiStepJobConfig<RiskDto, Ri
|
|||||||
JobRepository jobRepository,
|
JobRepository jobRepository,
|
||||||
PlatformTransactionManager transactionManager,
|
PlatformTransactionManager transactionManager,
|
||||||
RiskDataProcessor riskDataProcessor,
|
RiskDataProcessor riskDataProcessor,
|
||||||
RiskDataWriter riskDataWriter,
|
RiskDetailDataWriter riskDataWriter,
|
||||||
JdbcTemplate jdbcTemplate,
|
JdbcTemplate jdbcTemplate,
|
||||||
@Qualifier("maritimeServiceApiWebClient")WebClient maritimeServiceApiWebClient,
|
@Qualifier("maritimeServiceApiWebClient")WebClient maritimeServiceApiWebClient,
|
||||||
RiskDataRangeReader riskDataRangeReader,
|
RiskDataRangeReader riskDataRangeReader,
|
||||||
|
|||||||
@ -46,7 +46,7 @@ public class RiskDataRangeReader extends BaseApiReader<RiskDto> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getApiPath() {
|
protected String getApiPath() {
|
||||||
return "/RiskAndCompliance/UpdatedRiskList";
|
return "/RiskAndCompliance/UpdatedRiskWithNarrativesList";
|
||||||
}
|
}
|
||||||
protected String getApiKey() {
|
protected String getApiKey() {
|
||||||
return "RISK_IMPORT_API";
|
return "RISK_IMPORT_API";
|
||||||
|
|||||||
@ -22,8 +22,6 @@ public class RiskRepositoryImpl extends BaseJdbcRepository<RiskEntity, Long> imp
|
|||||||
@Value("${app.batch.target-schema.tables.risk-compliance-001}")
|
@Value("${app.batch.target-schema.tables.risk-compliance-001}")
|
||||||
private String tableName;
|
private String tableName;
|
||||||
|
|
||||||
@Value("${app.batch.target-schema.tables.risk-detail-001:tb_ship_risk_detail_info}")
|
|
||||||
private String riskDetailTableName;
|
|
||||||
|
|
||||||
public RiskRepositoryImpl(JdbcTemplate jdbcTemplate) {
|
public RiskRepositoryImpl(JdbcTemplate jdbcTemplate) {
|
||||||
super(jdbcTemplate);
|
super(jdbcTemplate);
|
||||||
@ -233,7 +231,7 @@ public class RiskRepositoryImpl extends BaseJdbcRepository<RiskEntity, Long> imp
|
|||||||
?, ?, -- 83-84: rss_sts
|
?, ?, -- 83-84: rss_sts
|
||||||
?, ? -- 85-86: job_execution_id, creatr_id
|
?, ? -- 85-86: job_execution_id, creatr_id
|
||||||
)
|
)
|
||||||
""".formatted(targetSchema, riskDetailTableName);
|
""".formatted(targetSchema, tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRiskDetailParameters(PreparedStatement ps, RiskEntity entity) throws Exception {
|
private void setRiskDetailParameters(PreparedStatement ps, RiskEntity entity) throws Exception {
|
||||||
|
|||||||
@ -142,10 +142,9 @@ app:
|
|||||||
movements-008: tb_ship_trnst_hstry
|
movements-008: tb_ship_trnst_hstry
|
||||||
code-001: tb_ship_type_cd
|
code-001: tb_ship_type_cd
|
||||||
code-002: tb_ship_country_cd
|
code-002: tb_ship_country_cd
|
||||||
risk-compliance-001: tb_ship_risk_info
|
risk-compliance-001: tb_ship_risk_detail_info
|
||||||
risk-compliance-002: tb_ship_compliance_info
|
risk-compliance-002: tb_ship_compliance_info
|
||||||
risk-compliance-003: tb_company_compliance_info
|
risk-compliance-003: tb_company_compliance_info
|
||||||
risk-detail-001: tb_ship_risk_detail_info
|
|
||||||
ship-028: ship_detail_hash_json
|
ship-028: ship_detail_hash_json
|
||||||
imo-meta-001: tb_ship_default_info
|
imo-meta-001: tb_ship_default_info
|
||||||
service-schema:
|
service-schema:
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user