사용자 도구

사이트 도구


springframework:batch

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
springframework:batch [2021/10/27 13:19]
kwon37xi
springframework:batch [2022/11/09 10:46]
kwon37xi [Chunk 사이즈가 크고 Transaction 이 긴데, 외부에 write 대상건을 알려주는 경우 DB Lock 발생할 수 있음]
줄 88: 줄 88:
   * 외부에서 그 데이터를 사용할 수 있게 하고자 했다면,   * 외부에서 그 데이터를 사용할 수 있게 하고자 했다면,
   * 절대로 Step 에 트랜잭션 매니저를 지정하지 말고, ''ResourcelessTransactionManager'' 를 사용하거나 CHUNK 를 작게 가져가야 한다.   * 절대로 Step 에 트랜잭션 매니저를 지정하지 말고, ''ResourcelessTransactionManager'' 를 사용하거나 CHUNK 를 작게 가져가야 한다.
 +  * ''ResourcelessTransactionManager'' 로 Batch Job 을 지정하면, Batch job 의 chunk 가 아닌, 각각의 ''Service''/''Repository'' 등의 메소드에 설정된 ''@Transactional''을 기준으로 트랜잭션이 작동하게 된다.
   * 안그러면 CHUNK size 만큼의 처리가 모두 끝날때까지 DB lock 이 잡혀있어서 외부에서 이벤트를 받아서 처리하는 측에서 lock 획득에 실패해서 오류가 발생하게 된다.   * 안그러면 CHUNK size 만큼의 처리가 모두 끝날때까지 DB lock 이 잡혀있어서 외부에서 이벤트를 받아서 처리하는 측에서 lock 획득에 실패해서 오류가 발생하게 된다.
 +  * 이게 아니더라도, **트랜잭션은 항상 짧게 가져가야 한다.**
 ===== JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters 오류 발생 ===== ===== JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters 오류 발생 =====
   * Job은 Job + Job Parameter 로 Job Key 가 결정되는데 동일한 Job Key 일 경우 실행이 안된다.   * Job은 Job + Job Parameter 로 Job Key 가 결정되는데 동일한 Job Key 일 경우 실행이 안된다.
줄 135: 줄 136:
  
 > o.s.b.c.l.AbstractListenerFactoryBean    : org.springframework.batch.item.ItemReader is an interface.  The implementing class will not be queried for annotation based listener configurations.  If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used. > o.s.b.c.l.AbstractListenerFactoryBean    : org.springframework.batch.item.ItemReader is an interface.  The implementing class will not be queried for annotation based listener configurations.  If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used.
 +> org.springframework.batch.item.ItemReader는 인터페이스입니다. 구현 클래스는 어노테이션 기반 listner 구성에 대해 실행되지 않습니다. @Bean 메소드에서 @StepScope를 사용하는 경우 listner 어노테이션을 사용할 수 있도록 구현 클래스를 리턴해야합니다.
 +
 +
  
  
springframework/batch.txt · 마지막으로 수정됨: 2023/12/08 13:43 저자 kwon37xi