Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- BeanFactory
- 이클립스 워크스페이스 이름 표시
- 이클립스
- 이클립스 제목표시줄
- 정보처리기사 연기 코로나
- svn 수동 설치
- 약국 구매
- 마스크구입처
- @Configuration
- java
- 2020 정보처리기사
- KF 94 마스크 구매
- 마스크 5부제
- 정보처리기사 필기 연기
- spring framework
- Spring Framwork
- 코로나 정보처리기사 필기 연기
- 마스크 구매 사이트
- 역슬래시 자동생성
- AnnotationConfigApplicationContext
- ApplicationContext
- Annotaion
- 마스크구입
- embedded tomcat
- Singleton Container
- 마스크 구매
- 코로나 정보처리기사
- spring
- @Bean
- Bean Definition
Archives
- Today
- Total
paranjong
[Spring] Spring Batch 처리 방식 본문
- 배치를 처리할 수 있는 방법은 크게 2가지
- Tasklet을 사용한 Tasklet을 사용한 Task 기반 처리
- 배치 처리 과정이 비교적 쉬운 경우 쉽게 사용
- 대량 처리를 하는 경우 더 복잡
- 하나의 큰 덩어리를 여러 덩어리로 나누어 처리하기 부적합
@Bean
public Step taskBaseStep(){
return stepBuilderFactory.get("taskBaseStep")
.tasklet(this.tasklet())
.build();
}
private Tasklet tasklet(){
return (contribution, chunkContext) -> {
List<String> items = getItems();
log.info("Task Item size : {}", items.size());
return RepeatStatus.FINISHED;
};
}
private List<String> getItems() {
List<String> items = new ArrayList<>();
for (int i=0; i<100; i++){
items.add(i + "hello");
}
return items;
}
- Chunk를 사용한 chunk(덩어리) 기반 처리
- itemReader, itemProcessor, itemWriter의 관계 이해 필요
- 대량 처리를 하는 경우 Tasklet보다 비교적 쉽게 구현
- 예를 들면 10,000개의 데이터 중 1,000개씩 10개의 덩어리로 수행
- 이를 Tasklet으로 처리하면 10,000개를 처리하거나, 수동으로 1,000개씩 분할
@Bean
public Step chunkBaseStep() {
return stepBuilderFactory.get("chunkBaseStep")
//Generic Type<String, String> 1번째 타입 -> input, 2번째 타입->output, chunck size 10
.<String, String>chunk(10)
.reader(itemReader())
.processor(itemProcessor())
.writer(itemWriter())
.build();
}
private ItemReader<String> itemReader() {
return new ListItemReader<>(getItems()); // date read
}
private ItemProcessor<? super String, String> itemProcessor() {
return item -> item + ", Spring Batch"; //data processing
}
private ItemWriter<? super String> itemWriter() {
return items -> log.info("chunk item size : {}", items.size()); //data writing
}
- reader, process에서는 하나의 데이터를 처리
- chunck 사이즈 이하로, reader, process 반복 수행
- reader, process 처리 후에 writer에서는 지정한 chunk 사이즈가 될 때 write 수행.
'Development Study > Spring Framework' 카테고리의 다른 글
[Spring] Singleton Pattern, Singleton Container (0) | 2022.10.03 |
---|---|
[Spring] Bean Definition 스프링 빈 설정 메타 정보 (0) | 2022.10.03 |
[Spring]BeanFactory와 ApplicationContext (0) | 2022.10.03 |
[Spring] @Configuration, @Bean (0) | 2022.09.25 |
[Spring] IoC, Di 그리고 컨테이너 (0) | 2022.09.24 |
Comments