Re: [KSUG] 안녕하세요. 스프링배치 환경세팅 중인데요. 궁금한 사항이 있어 문의드립니다.

778 views
Skip to first unread message

Sanghyuk Jung

unread,
Apr 1, 2014, 12:34:51 AM4/1/14
to ks...@googlegroups.com
ItemReader 의 구현체는  모든 건을 다 읽은 후에 null을 반환해야합니다. 구현하신것을 보니 항상 같은 object를 반환하도록 되어 있네요.
그리고 commit-interval과 completin-policy는 둘 중에 하나만 설정하시면 됩니다.

'한 번만 처리하고 마무리 되길 원하는데요. '라고 말씀하신 의미가  데이터가 1건인 작업을 처리하시는 것인가요? 그렇다면 Tasklet구조가 더 적합할것 같습니다.






2014년 4월 1일 오후 12:03, 도시농부 <faw...@gmail.com>님이 작성:
안녕하세요. 현재 개발중인 프로젝트에 배치작업이 있어서 스프링배치로 구현하고자 프로토타입 개발중에 있습니다.
궁금한 사항이 있어 질문 게시합니다. 
소스는 아래와 같습니다.
https://bitbucket.org/keum1112/springbatchstudy/

질문내용
1. 간단하게 Reader 를 읽어와서 Writer로 출력한 후 종료하는 배치입니다.
    BatchTest 클래스를 만들고 JobLauncherTestUtils로 잡을 실행합니다.
    한 로직이 마무리되면 완료하고 완료처리되는 간단한 건데요. 실행을 시키면 무한 반복으로 실행이 됩니다.
    한 번만 처리하고 마무리 되길 원하는데요. 
    환경 설정에서 <batch:chunk reader="testReader" writer="testWriter" commit-interval="1" /> 이렇게 하면 안되는 건가요?
    아니면 chunk 에 chunk-completion-policy 로 완료 정책을 명시해줘야 하는지 궁금합니다.

고수 분들의 조언 부탁드립니다.
읽어주셔서 감사합니다. ^^



--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/e69c59b5-4113-4d58-b681-3f7c25c6fc0a%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

Sanghyuk Jung

unread,
Apr 1, 2014, 9:29:06 PM4/1/14
to ks...@googlegroups.com
ItemReader와 동시에 ItemStream을 구현해서 데이터 초기화나 정리를 수행해야하는 상황인것 같습니다.

웹어플리케이션처럼 계속 실행되는 JVM에서 Job을 실행할때는 ItemReader, writer가 singleton일때는 주의 해야합니다..
커맨드라인에서 standalone으로 실행시켜야 Job종료와 동시에 JVM이 종료될때는 따로 신경쓰지 않아도 되기는합니다..



2014년 4월 1일 오후 3:51, fawsdj <faw...@gmail.com>님이 작성:
답변 감사합니다.

ItemReader 의 구현체는  모든 건을 다 읽은 후에 null을 반환해야합니다.

문구에서 많은 도움이 되었습니다. 감사합니다.

원하는 세팅을 하고 이제 스케줄러를 추가하였습니다. 스케줄러는 스프링의 task 로 구현하였습니다.

소스를 실행해보시면 다음과 같이 출력이 됩니다.

Tue Apr 01 15:13:50 KST 2014
write test1
write test2
write test3
Exit Status : COMPLETED
Tue Apr 01 15:13:55 KST 2014
Exit Status : COMPLETED

제가 원하는 출력은 아래와 같습니다.

Tue Apr 01 15:13:50 KST 2014
write test1
write test2
write test3
Exit Status : COMPLETED
Tue Apr 01 15:13:55 KST 2014
write test1
write test2
write test3
Exit Status : COMPLETED

5초마다 반복해서 처리가 하고 싶은데요. 
<batch:job id="testJob" restartable="true"> 에서의 restartable 속성이 있는데
제가 알기로는 restartable 속성은 에러 발생시 재시작을 할 것인지 물어보는 속성인 걸로 알고 있습니다.

다른 방법이 있다면 알려주시면 감사하겠습니다.


2014년 4월 1일 오후 1:34, Sanghyuk Jung <ben...@gmail.com>님이 작성:

더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages