처리해야 할 전체 건수
정상처리된건수
오류건수
이런 정보를 알고자 합니다. 어떻게 해야 할까요?
batch_step_execution에 있는 read_count에는 해당 step에서 ItemReader을 통하여
읽혀진 카운트가 들어가 있어서 읽어야할 전체 카운트는 찾을수가 없습니다.
좋은 방법이 없을까요?
다시 문서을 찾아 보니 skippable-exception-classes 을 이용하여 오류 발생시 Skip을 하도록 하고
SkipListener을 구현하여서 익셉션이 발생한 Item의 로그가 남도록 하면
전체 처리해야 할 건수와 오류 건수를 파악 할수 있겠네요.
정상혁님의 문서 ,박찬욱님의 문서를 참조하면서 많은 도움을 받고 작업을 하고 있는데
아직 실력이 미천하여 지대로 작업 하고 있는지 하면서도 의문이 드네요.
정상혁님 제가 제대로 파악 하고 있는 것일까요?
On 10월21일, 오후7시16분, Sanghyuk Jung <bene...@gmail.com> wrote:
> '읽어야할 전체 카운트'와 '읽혀진 카운트'의 차이가 발생하는 시점이 어디인가요?
>
> Step이 지나면서 점점 읽혀지는 것이 줄어드는 것인가요? Job의 형태를 대략적으로 설명해주시면 같이 고민을 해보는데 도움이 될 것
> 같습니다.
>
> 2009년 10월 21일 오후 5:28, 나연우 <sssin9...@gmail.com>님의 말:
>
>
>
> > 스프링 배치에서 JOB이 종료된이후에 해당 JOB에서
>
> > 처리해야 할 전체 건수
> > 정상처리된건수
> > 오류건수
>
> > 이런 정보를 알고자 합니다. 어떻게 해야 할까요?
> > batch_step_execution에 있는 read_count에는 해당 step에서 ItemReader을 통하여
> > 읽혀진 카운트가 들어가 있어서 읽어야할 전체 카운트는 찾을수가 없습니다.
>
> > 좋은 방법이 없을까요?- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -
아래에 있는 메타데이터 테이블을 보면SKIP에 대한 3가지 속성이 보입니다.read_skip_countwrite_skip_countprocess_skip_count여기가 그런 skip 건수를 기록하기 위한 공간입니다. 각 skip_count의 정확한 조건은 아직 저도 파악해보지 못했는데, 이번 기회에 한번 소스를 보고 말씀드리겠습니다 ^^;스프링배치 2.0에 대한 추가적인 자료나 각종 삽질을 방지하기 위한 글을 쓰려고 준비중인데, 정리되는대로 KSUG를 통해서 알려드리겠습니다. (몇달째 그냥 지나고 있군요 ^^; )
2009년 10월 22일 오전 9:47, 나연우 <sssi...@gmail.com>님 의 말:
ItemReader 을 통하여 1000건의 데이터를 읽어야 하는데 10건을 읽고 오류가 발생하게 되면
그리고 스프링배치 책은 나오게 된다면 KSUG분들을 대상으로 베타리더로 모집할 생각을 하고 있습니다 ^^;책에는 기초 활용법 위주로 쓰자는 의견이 있어서 어떤 내용이 들어가고 빠질지는 아직도 고민중인데, 책에 들어갈 수 없는 내용도 KSUG를 통해서는 공유할 수 있을 듯합니다.
2009년 10월 22일 오전 10:43, Sanghyuk Jung <ben...@gmail.com>님 의 말:
어떤 내용이 들어가고 빠질지는 아직도 고민중인데, 책에 들어갈 수 없는 내용도 KSUG를 통해서는 공유할 수 있을 듯합니다.
- PL-SQL로 작성한 배치 프로그램 > Spring Batch 프로그램 변환
- 배치 프로그램 자동화 테스트
혼자끙끙 거리는 것에 대해서 여러 의견들을 들으니.
다시 한번 생각해 볼수 있는 기회가 되는거 같아 좋습니다.
그리고 책도 빨리 나왔으면 좋겠네요.
책이 나온다면 국내 처음 으로 나오는것이 되겠네요..
많은 도움이 되리라 기대 하고 있겟습니다.
On 10월22일, 오전11시54분, 박성철 <gyu...@gmail.com> wrote:
> > * PL-SQL로 작성한 배치 프로그램 > Spring Batch 프로그램 변환
> > * 배치 프로그램 자동화 테스트
>
> 오.. 둘 다 멋져요.
> 특히 Spring Batch로 바꾸는 건 단계별로 진행하면서 Batch의 기능을 하나씩
> 소개하는 것도 좋겠어요.
>
>
>
</chunk>
<listeners>
<batch:listener ref="steplogginglistener"/>
</listeners>
</tasklet>
</step>
위와 같이 모든 Exception 대하여 스킵을 하도록 하였구요
ItemReader를 통하여 읽게 되는 건수는 5건이 있습니다.
이 5건은 이미 DB에 있어서 모두 중복 PK에러가 발생하도록 되어 있는데요
BATCH_JOB_EXECUTION에 아래와 같이 나왔네요
COMMIT_COUNT : 6
READ_COUNT : 5
FILTER_COUNT : 5
WRITER_COUNT : 0
READ_SKIP_COUNT : 0
WRITER_SKIPCOUNT : 5
ROLLBACK_COUNT : 10
여기에서 COMMIT_COUNT: 6건과
ROLLBACK_COUNT : 10건이 어떻게 나올수 잇는것인지 이해가 되지 않네요.
제생각으로는 COMMITCOUNT 도 5 ROLLBACK_COUNT : 0이 되어야 하지 않나요?
> > - 원본 텍스트 보기 -- 원본 텍스트 숨기기 -
1. ItemWriter는 JdbcBatchItemWriter쓰시는 것이 맞으신가요?
아래와같이 IbatasBatchItemWriter를 사용하고 있습니다.
<bean id="excInitDataLoad_01_insert"
class="org.springframework.batch.item.database.IbatisBatchItemWriter">
<property name="statementId" value="CF_INST_FV_BAS.INSERT01" /
>
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
2. JobParameter는 어떤 방식으로 생성하시나요?
아래와 같이 Launch 하는 부분에서 하드코딩을하여 사용하고 있습니다.
public void testLaunchJob() throws Exception {
this.logger.debug("validatePostConditions");
Map param = new HashMap();
param.put("PROC_YMD", new JobParameter("20090831"));
param.put("CORP_SECD", new JobParameter("TI01"));
this.jobParameters = new JobParameters(param);
this.jobExecution = getLauncher().run(this.job,
this.jobParameters);
....
<bean id="excInitDataLoad_01_select"
class="org.springframework.batch.item.database.IbatisPagingItemReader"
scope="step">
<property name="queryId" value="excInitDataLoad_01_select" />
<property name="sqlMapClient" ref="sqlMapClient" />
<property name="parameterValues">
<map>
<entry key="PROC_YMD" value="#{jobParameters
[PROC_YMD]}"/>
</map>
</property>
</bean>
..
On 10월22일, 오후1시23분, Sanghyuk Jung <bene...@gmail.com> wrote:
> 두가지만 확인해 주시면 나름대로 짐작되는 흐름을 파악해보겠습니다.
> 1. ItemWriter는 JdbcBatchItemWriter쓰시는 것이 맞으신가요?
> 2. JobParameter는 어떤 방식으로 생성하시나요?
>
> 2009년 10월 22일 오후 12:12, 나연우 <sssin9...@gmail.com>님의 말: