inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Spring Batch tử thần: Nỗi kinh hoàng tột độ lúc 3 giờ sáng giờ đã kết thúc.

Chương 6. Chiến dịch 1: Multi-threaded Step - Oanh tạc phân tán luồng ☠️

[건의][6장][작전1] deprecated 메소드

42

작성자 없음

0 câu hỏi đã được viết

1

 

 

...

    @Bean
    public Step threatAnalysisStep(
            JpaPagingItemReader<Human> humanThreatDataReader,
            ItemProcessor<Human, TargetPriorityResult> threatAnalysisProcessor,
            FlatFileItemWriter<TargetPriorityResult> targetListWriter
    ) {
        return new StepBuilder("threatAnalysisStep")
                .<Human, TargetPriorityResult>chunk(10, transactionManager)
                .reader(humanThreatDataReader)
                .processor(threatAnalysisProcessor)
                .writer(targetListWriter)
                .taskExecutor(taskExecutor())
//                deprecated 되어서 안씀
//                .throttleLimit()
                .build();

    }

...

 

에서 .throttleLimit() 부분이 5 이후로 deprecated 된다고 명시되어 있어.

 

관심사 분리로 인해서 taskExecutor 정의 부분에서 설정하라고 권장하는 것을 확인했거든.

 

현재 강의가 사실상 Spring Batch 5.x 까지의 기본 내용과 원리를 살펴봤잖아 ?

 

그렇다 하더라도 혼란을 줄 수 있기 때문에 해당 부분은 삭제하던지 아니면 추가 내용을 기재해야 할 것으로 보여.

 

image.png

 

java spring spring-boot spring-batch backend

Câu trả lời 2

1

KILL-9

흥미로운 질문이군 열심히 학습한 느낌이 난다.

 

그러나 형.

배치5 기준으로 다른 대안은 없다 다시 말해 뺄 수 없다는 말이다. 배치6으로 가면 달라질까?

 

강의 배치6 부분을 보면 알겠지만,

 

아니 현 시점 배치를 기준으로 말하자면

유지하는 것이 맞다. 오히려 IDE와 자바 doc의 경고를 무시하는게 더 맞다. deprecated를 시작한 시점의 예상이 현재의 양상과 좀 달라졌다고 이해하면 된다

 

이유는 더 깊이 파악하다보면 알게 되겠지만 당장은 나를 믿어라. 아니, 배치6까지 공부하면 대충 알게 될 것이다

 

시간이 좀 여유로워지면 자세히 설명하겠다 💀💀

 

결론은 throttlelimt은 유지되어야하고 너처럼 주석처리하면 안된다(이유는 강의 내용에 담겨있다. 그리고 실무에서도 아주 많은 병사들이 놓치는 부분이니 반드시 숙지하길 바란다.)

 

P.S 덧붙이자면 이는 “taskExecutor 정의 부분에서 설정” 할 수 없는 이슈다. 정확히는 스프링 배치 스텝 구현 자체를 수정하거나 배치6처럼 아예 구현체를 바꿔야만 해결할 수 있는 문제다. 자세한 사항은 강의 내용을 참고하길 바란다 💀💀

-1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

qlghwp123님, Spring Batch에서 throttleLimit() 메소드가 deprecated된 점에 대해 지적 주셨군요. throttleLimit() 메소드는 Spring Batch 5 버전 이후로 사용을 권장하지 않기 때문에, taskExecutor()에서 직접 실행 스레드 풀을 관리하는 방법을 채택하는 것이 좋습니다.

해결방안 제안

  1. throttleLimit() 삭제:

    • 혼란을 방지하기 위해, deprecated된 throttleLimit() 메소드 설정 부분은 삭제하고, 코드에서 해당 메소드의 흔적을 남기지 않는 것이 좋습니다.
  2. 대체 코드 적용:

    • 스레드 풀의 실행을 관리하는 TaskExecutor의 설정을 통해, 필요한 동시 실행의 개수를 정의할 수 있습니다. 적절한 예제 및 설정 방법을 강의 노트에 추가하여 학습자의 혼란을 줄일 수 있습니다.

이미지 설명

첨부해주신 이미지에는 throttleLimit(int throttleLimit) 메소드가 @Deprecated 주석과 함께 표시되어 있어, 이 메소드가 Spring Batch 5.0부터 폐기 예정이라는 점을 확인할 수 있습니다. 따라서 이러한 변경 사항에 대한 충분한 안내가 필요합니다.

이러한 사항과 관련해서 기존에 유사한 질문을 다룬 게시물이 있습니다. 아래 링크에서 확인하시기를 권장드립니다:
- Spring Batch에서 deprecated된 throttleLimit 대응 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Json 요청 처리

1

26

2

[예제][3장][작전2] windows 에서 마지막 예제

0

35

1

[오타][3장][작전1] 형 이건 빨리 해줘

2

90

2

[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분

1

57

1

[오타] "JobScope와 StepScope 사용 시 주의사항" 부분

1

63

2

spring boot 4 + spring batch 6 설정 변경?

1

95

2

Batch 패키지 설계 — 실무에서 Job 단위 구조

1

93

1

Spring batch를 실행해줄 스케줄러와 batch 실행 환경

1

87

1

메타테이블에 데이터가 생기지 않는 이유

1

102

2

Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의

1

102

2

@StepScope 또는 @JobScope와 JobOperator

1

142

5

Remote Partitioning

1

111

2

킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?

1

135

2

병렬 중첩

1

101

3

형 코드에 public static class 이게 뭐야 ?

1

133

3

ExitStatus

1

64

2

Batch6: jobOperator.startNextInstance() throws UnexpectedJobExecutionException

1

124

5

jdbc 커서, 페이징에서 일대다 관계 데이터 뻥튀기 조회 처리 방법 질문

1

116

2

SkipPolicy는 여러번 불릴 수 있는가?

1

50

2

형 실무에서 배치 시스템은 어떤 식으로 HA를 구성해??

1

103

1

메타데이터 관리

1

61

2

2장. 작전2: 분산 서버 로그 처형 작전 Resource[]의 대체방안(읽어야할 내용이 매우 커지면?)

1

80

3

2장. 작전2: 분산 서버 로그 처형 작전 (시스템에 의존적인) SystemCommandTasklet 관련 질문

1

93

2

CommandLineJobRunner를 통한 실행

1

84

2