5분에 한 번씩 자동 재고 정리가 될 수 있도록 만들어 보자
spring Scheduled/batch를 사용하려면 의존성 주입이 필요하다
그리고 어노테이션을 붙혀줘야한다
여기에 어노테이션 붙이는 건 처음이다
그리고 batch를 위한 세팅을 해야 한다
여기를 참고하자
springboot 2.x 이상 springbatch table문제 해결 방법!
id 'org.springframework.boot' version '2.3.2.RELEASE'를 사용 중! 그리고 springbatch개발을 하고 있다! 그런데? 스프링배치를 수행하면서 아래의 오류 발생~~! bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_..
acet.pe.kr
application.properties
true여야 배치가 작동하고
always를 해서
혼자 저렇게 db에 접근해 테이블은 만들고
기록을 만들 수 있게 한다
둘 중 하나라도 없으면 작동이 안 된다
vbankConfig
아주 심플하게 만들었다
왜냐면 아직 배치에 대해 이해를 다 못했기 때문이다
그래서 필요하다고 생각하는 거만 간단하게 구현하였다
이글들을 참고해보자
https://wan-blog.tistory.com/53
Spring Batch Example 2 - 간단한 Job만들기
간단한Job 만들기 1. 개발 환경 구성 2. 배치 메타 테이블 정보 2.1. Job Instance (BATCH_JOB_INSTANCE) 2.2. Job Execution (BATCH_JOB_EXECUTION) 2.3. Job parameteres (BATCH_JOB_EXECUTION_PARAMS) 2.4. St..
wan-blog.tistory.com
https://cheese10yun.github.io/spring-batch-basic/
Spring Batch 간단 정리 - Yun Blog | 기술 블로그
Spring Batch 간단 정리 - Yun Blog | 기술 블로그
cheese10yun.github.io
다 읽으면 상당히 복잡한데
필요한 부분만 빼다 써 보자
모르는 부분은 나중에 필요해지게 되면
공부를 하고 있을 것이다
scanVbank
execute 외에도 StepExecutionListener 임 플리 멘트 하면
beforestep/afterstep도 사용할 수 있다
vbankDao
여기서 처음 join쿼리문을 사용했다
vbank테이블에서 현재보다 작은 기한을 가진 paymentid를 찾아
예약 테이블과 조인한 뒤 같이 삭제한다
jobSchedular
@Scheduled(fixedDelay = 1000*100)로 실행 간격을 정할 수 있다
정하는 방법도 여러 가지이다(1000=1초이다)
배치를 실행시킬 때는 매번 다른 파라미터가 들어가야 한다
JobParameters JobParameters=new JobParametersBuilder().addString("key","vbank"+LocalDateTime.now().toString()).toJobParameters();
안 그러면 작동하지 않고
db를 조회하면 All steps already completed or no steps configured for this job라고 되어있다
테스트
지정시간마다 배치파일이 잘 실하아 되고 있다
13:53분에
(1000*300)=5분으로 설정했다 13:58분/14시 3분에 작동할 것이다
예약을 하고 테스트해보자
3개는 2시까지 입금되지 않으면
스케줄러+배치가 작동해서
삭제할 것이다
3개는 3시까지 입금되지 않으면
스케줄러+배치가 작동해서
삭제할 것이다
before
채번 취소를 하지 않는 이유는
아임 포트 문의 결과
시간이 넘어서 입금이 되면
pg사에서 가맹점 통보 없이 알아서
막아준다고 한다
13:58분 작동
두시 이전이기 때문에 달라지는 건 없다
14:03
농협 중앙은행이 사라졌다
와우! 재고정리 성공!
처음에 이런 게 있다는 게 알았을 때 너무 신기했다
배치를 좀더 공부해서 잘 써먹고 싶다
15:02
이제 예약취소 구현으로 가보자!