월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 배치
실전! 스프링 배치 어플리케이션 개발 source는 어디서 구할수 있나요? 찾을수가 없네요.
실전! 스프링 배치 어플리케이션 개발 source는 어디서 구할수 있나요? 찾을수가 없네요.
- 미해결스프링 배치
DuplicateKeyException이 발생합니다.
한번 실행하고 나서 두번째 시도시 아래와 같이 키중복 발생합니다. org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT into BATCH_STEP_EXECUTION(STEP_EXECUTION_ID, VERSION, STEP_NAME, JOB_EXECUTION_ID, START_TIME, END_TIME, STATUS, COMMIT_COUNT, READ_COUNT, FILTER_COUNT, WRITE_COUNT, EXIT_CODE, EXIT_MESSAGE, READ_SKIP_COUNT, WRITE_SKIP_COUNT, PROCESS_SKIP_COUNT, ROLLBACK_COUNT, LAST_UPDATED) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; Duplicate entry '0' for key 'BATCH_STEP_EXECUTION.PRIMARY'; nested exception is java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'BATCH_STEP_EXECUTION.PRIMARY' Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'BATCH_STEP_EXECUTION.PRIMARY' 개선책으로는 아래와 같이 해봤는데도 안됐습니다. 1. @SpringBootApplication 주석 후 아래와 같이 진행 @EnableAutoConfiguration(exclude={BatchAutoConfiguration.class}) 2. @SpringBootApplication(exclude={BatchAutoConfiguration.class}) 를 통해 스프링 배치 테이블을 초기화하지 않게 막아도 동일하게 키중복 에러가 나는데 방법이 없을까요? 혹은 테이블 정보 delete해주고 했음에도 불구하고 동일합니다 ...
- 미해결스프링 배치
childJob 두번 실행
안녕하세요. 강의 정말 잘 듣고 있습니다. 한가지 질문이 있어 이렇게 글 올립니다. JobStep강의에서 childJob을 두번실행하는 경우가 발생합니다. 1. jobStep -> childJob 실행, StepExecutionListener를 이용하여 파라미터 값 {name: "user1"}의 값을 넣어줌 2. @Bean으로 인해서 스프링 컨테이너에서 DI되어 childJob을 한번 더 실행 이때는 파라미터 값 {}임 제가 생각했을때는 childJob에서 저 @Bean을 빼야하는거 같은데 혹시 이게 맞나요?? 아니면 저만 그런건가요
- 미해결스프링 배치
spring batch DB Schema 확장 문의
안녕하세요. 강사님 프로젝트 마다 DB 표준이 다를 텐데 meta schema의 테이블명, 컬럼명, 컬럼 타입 변경과 배치가 실행될 때 수행되는 sql 문을 수정할 수 있는 확장 포인트가 있나요? 감사합니다.
- 미해결스프링 배치
RepeatTemplate -> RepeatOperations
SimpleChunkProvider에서의 반복문은 RepeatTemplate이 아닌 RepeatOperations을 사용하는 것 같습니다.
- 미해결스프링 배치
ItemStream.update 관련
9:46초경 ItemStream 프로세스 관련 - ItemStream.update() 메서드가 Chunk size만큼 반복된다고 나와 있는데 - TaskletStep의 doExecute() 메서드에서는 반복문 바깥에 stream.update() 메서드가 호출되어서 1번만 호출되는 것 같습니다 @Override protected void doExecute(StepExecution stepExecution) throws Exception { stepExecution.getExecutionContext().put(TASKLET_TYPE_KEY, tasklet.getClass().getName()); stepExecution.getExecutionContext().put(STEP_TYPE_KEY, this.getClass().getName()); stream.update(stepExecution.getExecutionContext()); getJobRepository().updateExecutionContext(stepExecution); // Shared semaphore per step execution, so other step executions can run // in parallel without needing the lock final Semaphore semaphore = createSemaphore();
- 미해결스프링 배치
JobStep 문의드립니다.
안녕하세요. 강사님 JobStep 강의해주신 내용과 동일하게 코딩을 하였는데 하나만 다르게 코딩을 해보았습니다. (JobLauncher 에 비동기 실행 설정을 하여 Job 실행) 이렇게 실행을 해보니, 결과는 강사님과 모두 동일한데 batch_step_execution 에 생성되는 3개의 결과 중 stepName 이 jobStep 인 Row 의 EXIT_CODE 만 UNKNOWN 으로 찍히고 있습니다. 혹시 어떤 이유로 이런 결과가 나오는지 예상이 되시는지요?
- 미해결스프링 배치
taskExcecutor 지정해서 muti 쓰레드로 실행시 어플리케이션 종료되지 않는 이슈
안녕하세요. taskExcecutor 지정해서 muti 쓰레드로 실행시 어플리케이션 종료되지 않는데 이건 taskExecutor 내부적으로 뭔가가 떠있어서 그런건가요? taskExcecutor 지정 안했을 때는 정상 종료됩니다.
- 미해결스프링 배치
docker db (mysql) 이 죽는 현상이 있습니다.
안녕하세요. 좋은 강의 만들어주셔서 감사합니다. 아래와 같이 강좌와 유사하게 spring.datasource.hikari 로 mysql 설정을 한 후 간단한 job 을 실행시키면 docker 로 설치한 mysql db 가 죽는 현상이 있습니다. 혹시 hikari 설정이 부족해서 그런 것일까요? 강좌에서는 잘 진행이 되는것 같아서 질문드립니다. 그래서 주석 처리하고 기존에 하던 방식으로 spring.datasource 를 이용해서 mysql 설정을 했습니다. spring.datasoruce 는 datasource 설정인거 같고, spring.datasource.hikari 는 hikari connection pool 설정인거 같은데요. 헷갈리네요. 어디에 db 설정을 정의하는것이 기본일까요? spring: profiles: active: local---spring: config: activate: on-profile: local datasource:# hikari:# jdbc-url: jdbc:mysql://av-api01-dc.nfra.io:23306/aida_project?useUnicode=true&characterEncoding=utf8# username: root# password: root# driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver batch: jdbc: initialize-schema: always
- 미해결스프링 배치
JobParametersIncrementer 문의드립니다.
안녕하세요. 컨트롤러 만들어서 jobLauncher.run 으로 job 을 실행시키는 방식으로 개발 중에 있는데요. 컨트롤러 안에서 JobParameter 생성해서 run 의 인자로 셋팅을 했는데 이렇게 개발을 하니 강의대로 CustomJobParameterIncrementer 를 설정해도 Incrementer 가 적용되지 않는 거 같습니다. Job 최초 실행 시, execution_params DB 테이블에 Incrementer 에서 생성한 파라미터가 기록되지도 않고 두번 실행하면 중복 오류가 발생하고 있고요. 확인 좀 부탁드립니다.
- 미해결스프링 배치
파워포인트 교육자료있나요?
파워포인트 교육자료있나요? git은 주소는 어떻게 되나요?
- 미해결스프링 배치
@StepScope를 사용한 것과 안한 것의 차이점 문의
안녕하세요 챕터 : 스프링 배치 실행 - flow 강의 : @JobScope / @StepScope - 기본개념 및 설정실습 및 테스트 부분에 문의 있습니다. 런터임시 tasklet2()를 통해서 Tasklet빈 생성 할 @StepScope와 @Value를 사용하여 StepExecutionContext에 접근하여 원하는 값을 얻어오는 것을 실습해봤는데요 이렇게 @StepScope와 @Value를 통해서 하는 것과 바로 Tasklet에서 매개변수로 넘어오는 stepContribution을 통해서 접근하여 값을 얻어오는 것의 차이점은 어떤 걸까요? 해당 실습에서는 둘다 결과가 같아서 차이점이 헷갈립니다.
- 미해결스프링 배치
EXITE_CODE 질문드립니다.
챕터 : 스프링 배치 실행 - flow강의명 : SimpleFlow 예제 해당 강의 13:59 부터 이해가 잘안되고 있습니다. flow1()의 step2에서 예외가 발생하면서 STEP_EXCUTION의 EXITE_CODE가 FAILED이므로flow3()을 실행했고이후 flow3() 그에 해당하는 모든 스탭이 COMPLETED인데 왜 JOB_EXCUTION의 EXITE_CODE가 FAILED가 되는걸까요?
- 미해결스프링 배치
JdbcCursorItemReader 쿼리 실행 시점과 ResultSet 동작 방식이 궁금합니다.
안녕하세요. AbstractCursorItemReader#doOpen() -> JdbcCursorItemReader#openCursor()에서 ......this.rs = preparedStatement.executeQuery();...... 해당 시점에 쿼리가 실행이 되고, 이후 커넥션을 쭉 유지한채 AbstractCursorItemReader#doRead() -> JdbcCursorItemReader#readCursor(rs, currentRow)가 메소드가 호출될 때마다 DB에서 1row씩 데이터를 꺼내오는 방식으로 동작하는 것일까요? openCursor에서 쿼리 실행 후 메모리에 쿼리 수행결과를 가지고 있다가 doRead() -> readCursor()를 수행하는건지 혼란이 와서 질문 드립니다. JpaCursorItemReader의 경우는 JpaCursorItemReader#doOpen()에서 쿼리 실행 후 결과를 메모리에 가지고 있다가 이때는 DB 커넥션 유지하지 않고, doRead() 호출시 한로우씩 반환하는 식으로 동작하는게 맞나요?
- 미해결스프링 배치
문의 드립니다.
안녕하세요. 강사님, 수강생입니다. 강의듣다가 , 결과가 강사님과 다르게 나오는데, 소스위치가. https://github.com/onjsd...=> 여기 아닌가요 ? * JobRepositoryConfiguration 여길 따라하고 잇는데, JobExecution lastJobExecution = jobRepository.getLastJobExecution(jobName, jobParameters); 실행하면, lastJobExecution 값이 null 로 나와서.. 강의소스 따라해보려고 합니다
- 미해결스프링 배치
Jobinstance 중복실행
안녕하세요 Jobinstance가 중복실행되는걸 막아주는 역할에 관해 질문이 있습니다. 예를들어 매일실행되는 배치가 있고 targetDate라는 파라미터를 입력받아 수행됩니다. 그런데 오늘일자로 targetDate = 20211027 를 입력받아서 수행되었는데 다시한번 targetDate = 20211027를 입력받아서 수행해야되는경우는 어떻게 처리하면 되는걸까요?
- 미해결스프링 배치
스프링 배치 Job 동적 생성 관련 문의
안녕하세요. 스프링 배치 강의 진행 중 문의 사항이 있어서 글 남겨봅니다. 1.강의 내용에는 Job생성시 일일히 클래스를 통해 생성하고 있는데요. 동적으로 생성하면서 DB테이블에서 관리할 수 있는 방안이 있는지 궁금합니다. 2.JOB파라메터의 경우 1회 호출 후 동일한 파라메터로 재 호출이 안되는 것으로 알고 있어서 동일 파라메터로 호출 할 수 있는 방안이 있는지 궁금합니다. 3.스프링 배치 서버의 경우 이중화 구성할 경우 대체적으로 젠킨스를 이용해 배치를 실행하게 끔 처리하던데 결국은 젠킨스로 밖에 이중 실행 방지를 방법 말고는 없는건가요? 3가지 질문 관련 하여 강의 부분이 있다면 강의를 안내 부탁 드립니다. 감사합니다.
- 미해결스프링 배치
Spring batch + mybatis는 사용이 불가한지 궁금합니다.
Spring batch + mybatis는 사용이 불가한지 궁금합니다.
- 해결됨스프링 배치
EXIT_CODE 반영 문의
안녕하세요 강사님 한가지 궁금한게 있어 문의 남깁니다 flow1에서 failed 시점에 flow3으로 흐르도록 했을 때 flow3의 모든 스탭이 성공하여서 제 생각으로는 JobExecution 기록에 EXIT_CODE가 COMPLETED로 기록될 줄 알았는데 JobExecution 기록에 EXIT_CODE 가 FAILED로 기록되어 있습니다. JobExecution의 EXIT_CODE가 마지막 스탭이나 플로우의 상태값을 반영되는 것으로 인지하고 있었는데 위와 같은 경우와 같이 Job의 과정중 하나의 스탭이라도 실패하게 된다면 EXIT_CODE에는 FAILED로 기록이 되는건가요?
- 해결됨스프링 배치
JobLauncherApplicationRunner 초기화 과정에서 executeRegisteredJobs 부분은 어떤 부분을 처리하는 건가요?
protected void launchJobFromProperties(Properties properties) throws JobExecutionException { JobParameters jobParameters = this.converter.getJobParameters(properties); executeLocalJobs(jobParameters); executeRegisteredJobs(jobParameters);} 위 메소드 처리중 executeRegisteredJob(jobParameters) 메소드 디버그 잡아서 확인해보았는데 jobRegistry에 등록된 job이름과 jobNames를 비교해서 일치하면 execute를 실행시키는 로직인데 jobRegistry에 등록된 값이 없어서 패스하더라구요. 저과정이 어떤 역할을 하는건지 궁금합니다.