Spring boot kim's Shop/재고정리 시스템

Springboot 재고정리 시스템!(1) 가상계좌 재고정리 spring batch+ spring Scheduled

디비드킴 2021. 9. 6. 14:08

5분에 한 번씩 자동 재고 정리가 될 수 있도록 만들어 보자

 

spring Scheduled/batch를 사용하려면 의존성 주입이 필요하다

그리고 어노테이션을 붙혀줘야한다

BlogJwtTokenApplication.java

여기에 어노테이션 붙이는 건 처음이다

그리고 batch를 위한 세팅을 해야 한다

 

여기를 참고하자

https://acet.pe.kr/799

 

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

application.properties

true여야 배치가 작동하고

always를 해서

mysql

혼자 저렇게 db에 접근해 테이블은 만들고

기록을 만들 수 있게 한다

둘 중 하나라도 없으면 작동이 안 된다

 

vbankConfig

vbankConfig.java

아주 심플하게 만들었다

왜냐면 아직 배치에 대해 이해를 다 못했기 때문이다

그래서 필요하다고 생각하는 거만 간단하게 구현하였다

 

이글들을 참고해보자

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

scanVbank.java

 

execute 외에도 StepExecutionListener 임 플리 멘트 하면

beforestep/afterstep도 사용할 수 있다

 

vbankDao

vbankDao.java

여기서 처음 join쿼리문을 사용했다

vbank테이블에서 현재보다 작은 기한을 가진 paymentid를 찾아

예약 테이블과 조인한 뒤 같이 삭제한다

 

jobSchedular

jobSchedular.java

@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라고 되어있다

 

테스트 

vscode

지정시간마다 배치파일이 잘 실하아 되고 있다

13:53분에

(1000*300)=5분으로 설정했다 13:58분/14시 3분에 작동할 것이다

 

 

예약을 하고 테스트해보자

2021-09-06 14:00:00

3개는 2시까지 입금되지 않으면 

스케줄러+배치가 작동해서 

삭제할 것이다

2021-09-06 15:00:00

3개는 3시까지 입금되지 않으면

스케줄러+배치가 작동해서 

삭제할 것이다

 

before

mysql

채번 취소를 하지 않는 이유는 

아임 포트 문의 결과

시간이 넘어서 입금이 되면

pg사에서 가맹점 통보 없이 알아서

막아준다고 한다

 

13:58분 작동

vscode
mysql

두시 이전이기 때문에 달라지는 건 없다

 

14:03

vscode
mysql
http://localhost:3030/showReservationPage.html
http://localhost:3030/showReservationPage.html

농협 중앙은행이 사라졌다

와우! 재고정리 성공!

처음에 이런 게 있다는 게 알았을 때 너무 신기했다

배치를 좀더 공부해서 잘 써먹고 싶다

 

15:02

http://localhost:3030/showReservationPage.html
mysql

이제 예약취소 구현으로 가보자!