2021-08-08
0808 spring batch - jdbcItemWriter
2021-08-05
0805 스프링 배치 학습 정리2
1. ExecutionContext
: jobExecutionContext, StepExecutionContext 관련. 끊겼을 때 거기서부터 다시 시작할 수 있는 정보를 저장한다.
2. xxxListener
예를 들면 JobExecutionListener. 해당 Job의 전후에 처리할 메서드를 만들 수 있다. 해당 Listner를 implements해서 @Component로 올려도 되고,
아니면 4.2xx부터는 @BeforeJob @AfterJob같은 어노테이션 기능을 제공하기 때문에 implements안하고 @Component로만 올린다음에 해당 어노테이션 붙은 메서드를 작성하여 좀더 다양한 메서드를 구현할 수 있다.
(물론 @Component로 등록안하고. 곧바로 @Bean으로 올려도 OK)
cf. skip관련 Listner도 있음. 어떤 로직 발생시 skip하고- skip할때의 상세한 설정 구현.
3. 청크지향
chunk란 커밋의 단위이다.
chunk가 없다면. 배치 실행 도중 에러발생으로 중단되었을 때 처음부터 다시 시작해야 한다.. 그러나 chunk단위로 커밋함으로써 해당 커밋이후부터 restart할 수 있게 된다.
4. ItemStream
ExecutionContext에서 데이터를 읽고. restrart가능하게 해준다?
5.
@Bean
public Job job() {
return this.jobBuilderFactory.get("job")
.start(stepA())
.on("*").to(stepB())
.from(stepA()).on("FAILED").to(stepC())
.end()
.build();위의 경우에서. *가 먼저 오지만 스프링은 구체적인 조건을 먼저 보기때문에. 이경우 fail 이외는 A->B , fail시에는 A-> C로 이행한다.
여기서 on안에 들어가는 문자는 ExitStatus로. 얼마든지 커스텀이 가능함.
기본적으로는 BatchStatus랑 문자적으로는 동일해서. 걍 쓰면 되긴함.2021-08-04
0804 스프링 배치 배운 것 정리
1. @EnableBatchProcessing
: JobRepository, JobLauncher, JobFactory, StepFactory 자동 주입 가능하게 해주는 어노테이션. @Configuration과 함께 반드시 넣어주자
2. JobRepository : 배치관련 메타데이터 저장하는 역할
3. JobLauncher : Job을 실행하는 역할
4. Job : 어떠한 하나의 업무 단위. 여러개의 Step으로 구성되어 있다.
5. Step : Reader, Processor , Writer로 구성되어있으며 스프링 배치는 다양한 클래스의 Reader와 Writer를 제공한다. Processor는 데이터를 가공하는 역할, 비지니스 로직을 포함한다. A클래스를 B클래스로 변환한다거나 할때 필요함. 필수는 아님. (하지만 보통은 쓰겠지..?)
6. @JobScope : Step에 사용가능. 지연로딩을 가능하게 한다. 어플리케이션 로딩 시점이 아니라 해당 Job이 실행될때마다 Step을 새로 생성한다. (싱글톤이 아님)
7. @StepScope : Reader, Writer, Processor , Tasklet에 사용가능. 지연로딩을 가능하게 한다. 해당 Step실행시마다 새로 생성된다.
8. @JobScope, @StepScope를 왜 사용해야 하는가? ->
1) 지연로딩이 가능하다
2) JobParameter를 사용할 수 있다. 이로써 다양한 환경변수를 이용하여 배치 프로그램을 동작시킬수 있게 된다. 어플리케이션 로딩시점에 파라메터를 정하지않고 배치 실행시점에 - 비지니스 로직이 돌아가는 순간마다 - 파라메터를 다르게 할 수 있기 때문이다.
3) 여러 Step혹은 Job을 병렬적으로 실행할 때 발생하게 되는 동시성문제를 해결할 수 있다. (싱글톤이 아니라, 개개별로 새로 생성되기 때문에)
9. JobInstance = Job + JobParameter.
JobInstance를 run하면 JobExecution이라는 리턴값을 받을 수 있다. 해당 Job에 대한 메타데이터 정보를 포함한다. 이를테면 Job의 성공실패 여부 같은 것들.
마찬가지로 Step에 대한 StepExecution이 존재함.
10. chunk: 커밋의 단위. 대강 테이블 row1개라고 생각하면 편하다.
이를테면 reader의 chunk단위가 100 -> 100행씩 읽는다.
0328 fdisk, mkfs, mount, fstab
1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다. - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다. - 마지막에 w를 해야 실제로 반영이 된다. 3. mkfs를 하여 어떤 파일시스...
-
1. 임포트를 원하는 테이블 오른쪽클릭 -> 데이터 임포트 2. 찾아보기 -> 원하는 엑셀 파일 선택 3. 다음다음을 계속 눌러서 진행 4. SELECT 문으로 데이터가 잘 들어갔는지 확인하기
-
- sentinel : 레디스 모니터링 프로세스 1. aws에 세대의 인스턴스 설치 1) master + sentinel 2) slave + sentinel 3) slave + sentinel https://velog.io/@ssoop/AWS-E...
-
- db작업과 같이 I/O 성능이 중요한 경우, EC2 instance store를 고려한다. - EBS 의 volume 타입에는 4가지가 있다. - IOPS , throughput, size별로 차이가 있다. - SSD / HDD - IOPS란 ...