[SPRING] 스프링 배치 - 전체 작업에 대해 하나의 트랜잭션
SPRING스프링 배치 - 전체 작업에 대해 하나의 트랜잭션
나는 Spring-Batch를 사용하여 데이터베이스에 일부 객체를 생성하는 배치를 실행하고, 이러한 객체에서 파일을 생성 한 다음 FTP 서버로 파일을 전송합니다.
따라서, 나는 2 단계를 가지고있다 : 하나는 DB로부터 conf를 읽고, DB에 삽입하고 파일을 생성한다; 두 번째는 파일을 FTP 서버로 보냅니다.
문제는 FTP 서버에 문제가있을 때 트랜잭션을 롤백 할 수 없기 때문에 (DB에 새로운 삽입을 취소하는 것입니다).
어떻게 다른 단계에서 하나의 트랜잭션 만 사용하도록 작업을 구성 할 수 있습니까?
해결법
-
==============================
1.이것은 스프링 배치 (spring-batch)의 트랜잭션 특성으로 인해 나쁜 생각입니다. IMHO 간단한 해결책은 작업이 시작될 때 생성 된 토큰으로 1 단계에서 저장된 데이터를 표시하고 FTP 업로드가 실패하면 정리 단계로 이동하여 토큰이있는 모든 데이터를 삭제하는 것입니다.
이것은 스프링 배치 (spring-batch)의 트랜잭션 특성으로 인해 나쁜 생각입니다. IMHO 간단한 해결책은 작업이 시작될 때 생성 된 토큰으로 1 단계에서 저장된 데이터를 표시하고 FTP 업로드가 실패하면 정리 단계로 이동하여 토큰이있는 모든 데이터를 삭제하는 것입니다.
-
==============================
2.벨라 막스와 동의 : 이것은 나쁜 생각입니다.
벨라 막스와 동의 : 이것은 나쁜 생각입니다.
그러나이 단계도 실패 할 수 있으므로 트랜잭션을 롤백하지 않기 때문에 세 번째 정리 단계를 수행하지 않습니다.
삽입 된 항목을 FTP에 아직 보내지 않았 음을 나타내는 플래그로 표시 할 수 있습니다. 세 번째 단계는 플래그를 전환하여 이러한 항목이 FTP로 전송되었음을 나타냅니다.
그런 다음 cron / batch / 4 번째 정리 단계 / FTP로 보내지지 않은 모든 항목을 제거하는 것이 필요합니다.
from https://stackoverflow.com/questions/19031186/spring-batch-one-transaction-over-whole-job by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄에 html 파일로 작업하지 않는 환영 파일 (0) | 2019.02.19 |
---|---|
[SPRING] JavaFX 응용 프로그램의 maven 빌드 속도를 높이려면 어떻게해야합니까? (0) | 2019.02.19 |
[SPRING] @Controller를 사용하여 주석이 달린 모든 컨트롤러 가져 오기 (0) | 2019.02.19 |
[SPRING] Thymeleaf 및 Spring MVC에서 양식 매개 변수가 null입니다. (0) | 2019.02.19 |
[SPRING] 스프링 보안을 사용할 때 암호 해싱 알고리즘을 변경하는 방법은 무엇입니까? (0) | 2019.02.19 |