éçºã»ããã°ã©ãã³ã°ã»ããã¯ãšã³ã
æ°åäžä»¶ãã«ãŒãã§åãããšã¯ã§ããŸãã
倧容éããŒã¿ãæ±ãSpring Batchè¬åº§ for handling large-scale data
ãã®è¬çŸ©ã¯ãSpring Batchãåã«ãããããåãæ¹æ³ããšããŠã§ã¯ãªãã倧容éããŒã¿ãå®å®çã«åŠçããèšèšãšããŠæ±ãå®ç¿è¬çŸ©ã§ããJobãšStepãChunkããŒã¹ã®ãã©ã³ã¶ã¯ã·ã§ã³ããå§ãŸãã倱æããããŒã¿ã ããéžãã§ååŠçããæ¹æ³ããããŠäžŠååŠçã§æéãççž®ããæ¹æ³ãŸã§çŽæ¥å®è£
ããŸãã
- é£æåºŠ å
¥é
- å®ç¿äžå¿
- Java 17 · Spring Boot
- åè¬æéç¡å¶é
- Job â Step â Chunkæ§é ãæåããæã§çµã¿ãŸã
- æåã®Jobãã䞊ååŠçãŸã§ã»ãŒãã¹ãŠã®æéãå®ç¿ã§æ§æãããŠããŸã
- Skip · Retry · 䞊åé害埩æ§ãšããã©ãŒãã³ã¹ãŸã§
ã«ã«ãªçŸè·ã®ãµãŒããŒéçºè
ã»é¢æ¥å®ãå
±ã«æ§æããã«ãªãã¥ã©ã
é£æåºŠã¯å
¥éã§ãããã»ã¯ã·ã§ã³5ã»6ã®èé害æ§ãšäžŠååŠçã¯ããã§ã«ããããéçšäžã®æ¹ã«ãšã£ãŠãæ°ããå
容ã§ã
å®ç¿ç°å¢ã¯macOS(Apple M3) ã» Java 17 ã» VS Code
Spring Batch · 倧容éããããã¬ãŒã ã¯ãŒã¯Job · Step åºç€æ§é JobRepository · JobLauncher · ExecutionContextTasklet Stepãšã«ã¹ã¿ã å®è£
Chunk æååŠçãšãã©ã³ã¶ã¯ã·ã§ã³Reader · Processor · Writer ã¯ãŒã¯ãããŒSkip · Retry èé害æ§Multi Threaded Step 䞊ååŠçäžæå°ç¹ããåéãã restartJava 17 · Spring Boot · spring-framework
Spring Batch · 倧容éããããã¬ãŒã ã¯ãŒã¯Job · Step åºç€æ§é JobRepository · JobLauncher · ExecutionContextTasklet Stepãšã«ã¹ã¿ã å®è£
Chunk æååŠçãšãã©ã³ã¶ã¯ã·ã§ã³Reader · Processor · Writer ã¯ãŒã¯ãããŒSkip · Retry èé害æ§Multi Threaded Step 䞊ååŠçäžæå°ç¹ããåéãã restartJava 17 · Spring Boot · spring-framework
ãã®è¬çŸ©ãå§ãŸã£ãçç±
ããããåããã³ã«æããšããèšèããå§ãŸããŸãã
以äžã¯å®éã®äŒè©±ã®å
容ã§ããTossã®éçºè
ã®åãã«å¯ŸããKakaoã®é¢æ¥å®ãããããåãè¬çŸ©ãšããŠäœã£ãŠã¿ããããšçããæ¥ã®ããšã§ãã
Toss éçºè
æè¿ããããåããã³ã«ããã³ã¯ãããã§æãã⊠ããŒã¿ãå€ããããã ã
Choi (Kakao 颿¥å®)äœä»¶ãããåŠçããŠãã®ïŒïŒ éèç³»ã ããçžåœå€ããã ãã
Toss éçºè
äžååããšæ°åäžä»¶ã¯åºæ¬ã ã⊠åŠçé床ãåé¡ã ããé害ãèµ·ããæã®åŸ©æ§ãããã倧å€ãªãã ã
Ande (Naver)ããŒã⊠Springèªäœã¯éããã©ãMulti Threadedãšããé©çšããã°ããããŸã§ãã¡ããã¡ããããŒã«åãããã§ããªãã£ãããDBã®åé¡ãããªãéãã¯ãã
Choi (Kakao 颿¥å®)ç§ãåæã埩æ§ãListenerãªã©ãå°å
¥ããŠèŠãã°ããã»ã©é£ãããªãããSkipãRetryãå
¥ããã°ãåå¥ã«åTransactionããµããŒãããŠãããããã
Choi (Kakao 颿¥å®)ãããåãäžåºŠè¬çŸ©ã«èœãšã蟌ãã§ã¿ãããæã£ãããSpring Batchãããç¥ããªãæ¹ãå€ããã ãã
Hongãã⊠åã®äºå®ãèããã«ããšããããäžžæãããŠããã;;
ããããŠãã®è¬çŸ©ãäœãããŸãããããããæããšãã人ãšãããããªãæããªãã®ããç¥ã£ãŠãã人ã®äŒè©±ããã§ãã
â
æã£ãããSpring Batchã
ããç¥ããªãæ¹ãå€ããã§ãããã
çŸè·ã®ã«ã«ãªãµãŒããŒéçºè
ã»é¢æ¥å®12幎ç®ã»ãã®å¯Ÿè©±ã®åŸã«çŽæ¥è¬çŸ©ãäœããŸãã
ä»çŽé¢ããŠããããš
倧容éããŒã¿ã®ãããåŠçããã ã®ç¹°ãè¿ãæã§è§£æ±ºããŠããŸãããïŒ
å®åã§ããŒã¿ãæ±ã£ãŠãããšãåçŽãªCRUDãè¶
ããç¬éãå¿
ã蚪ããŸãããã®æãæ¬¡ã®ãããªåé¡ãäžæ°ã«æŒãå¯ããŸãã
- æ°çŸäžããæ°åäžä»¶ã«åã¶ããŒã¿ãäžåºŠã«åŠçããªããã°ãªããªã
- éäžã§å€±æããå Žåãã©ãããåéããã°ããã®ãåãããªã
- ãã©ã³ã¶ã¯ã·ã§ã³ãã©ããŸã§ãŸãšããã¹ãããã¡ã¢ãªãèããããã確信ãæãŠãªã
- ãããã®ã¹ã±ãžã¥ãŒãªã³ã°ãšéçšããäººãæ¯å管çããŠãã
ãããã®åé¡ãæ°è¡ã®ã³ãŒãã§è§£æ±ºã§ããã§ããããããããšãæ°äžè¡æžããªããã°ãªããªãã§ããããã
Why Spring Batch
Spring Batchã¯ã©ã®ãããªãã¬ãŒã ã¯ãŒã¯ã§ãã
Spring Batchã¯ã倧容éããŒã¿åŠçã®ããã®Javaã»SpringããŒã¹ã®ãã¬ãŒã ã¯ãŒã¯ã§ããåãªãååŸ©äœæ¥ãè¶
ããå®å®æ§ãšæ¡åŒµæ§ãèæ
®ããåŠçãå¯èœã«ããŸããSpring Bootäžã§ããã«äœ¿çšã§ããspring-frameworkãšã³ã·ã¹ãã ã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çããã®ãŸãŸæŽ»çšããŸãã
ãã£ã³ã¯
Chunkë Step ììì í ë²ì ì²ëЬí ë°ìŽí° 묶ìì ëšìì
ëë€. Spring Batchë ìŽ Chunk ëšìë¡ ë°ìŽí°ë¥Œ ëë ì²ëŠ¬íŽ ë©ëªšëЬ ì¬ì©ê³Œ ì±ë¥ì íšê» ì¡ìµëë€.
ãã©ã³ã¶ã¯ã·ã§ã³
Spring Batchë Chunk ëšìë¡ ížëìì
ì êŽëЬíŽ, ì€íšíì ë ê·ž ëšìë§ ë¡€ë°±íê³ ë€ì ì²ëЬí ì ììµëë€.
Skip · Retry
Spring Batchë í¹ì ë°ìŽí°ê° ì€íšíŽë ì 첎륌 ë©ì¶ì§ ìê³ ê±Žëë°ê±°ë ë€ì ìëíë 복구 ì ëµì ì ê³µí©ëë€.
Job · Step
Spring Batchë ë³µì¡í ë°°ì¹ ë¡ì§ì ëšê³ë¡ ëë ì€ê³íê² íŽ, ìŽëì 묎ììŽ ëëì§ ëª
ííŽì§ëë€.
Reader · Processor · Writer
ItemReaderë ë°ìŽí°ë¥Œ íëì© ìœê³ , ItemProcessorë ìœìŽìš ë°ìŽí°ë¥Œ ê°ê³µíê±°ë 걞ë¬ëŽë©°, ItemWriterë ê·ž 결곌륌 Chunk ëšìë¡ ëªšì ì ì¥í©ëë€.
ExecutionContext
Spring Batchë ì€í ìí륌 ì ì¥íŽ ì€ëšë ìì
ì ê·ž ì§ì ë¶í° ë€ì ì€í(restart)í ì ììµëë€.
䞊ååŠç
Spring Batchë ë©í° ì€ë ëì íí°ì
ëìŒë¡ ì²ëЬ ìê°ì ì€ìŽë ë³ë ¬ ì²ëЬ íšíŽì ì§ìí©ëë€.
å
¬åŒããã¥ã¡ã³ãã§ã¯ãSpring Batchããã®ããã«èª¬æããŠããŸãã
ãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã®æ¥åžžæ¥åã«äžå¯æ¬ ãªãå
ç¢ãªãããã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœã«ããããã«èšèšãããã軜éã§å
æ¬çãªããããã¬ãŒã ã¯ãŒã¯ã§ãã
äŒæ¥ã·ã¹ãã ã®æ¥åžžçãªéçšã«äžå¯æ¬ ãªãå
ç¢ãªãããã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœã«ããã軜éã§å
æ¬çãªããããã¬ãŒã ã¯ãŒã¯ã§ãããã®ã³ã°ããã¬ãŒã¹ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çããžã§ãçµ±èšãå詊è¡ãã¹ãããåŠçããªãœãŒã¹ç®¡çãªã©ã®æ©èœãåå©çšå¯èœãªåœ¢åŒã§æäŸããŸãã
å®éã®è¬çŸ©å
容ã®ãã¬ãã¥ãŒ
ãã®ãããªã·ãŒã³ãæ±ããŸã
説æããç»é¢ãèŠãæ¹ãæ©ãã§ããå®éã®è¬çŸ©ã®äžéšããã®ãŸãŸåãåã£ãŠããŸããã
ãã®è¬çŸ©ã®ç¹åŸŽ
ãªããã®Spring Batchè¬åº§ãªã®ã
颿¥å®ã®èŠç¹ããå¿
ãç¥ã£ãŠããã¹ãæŠå¿µãæŒãããŸã
æ©èœèª¬æã§çµããããŸãããå®éã®é¢æ¥ãå®åã§éèŠèŠããããã€ã³ããäžå¿ã«ãSpring Batchãã©ã®ããã«èšèšãã¹ãããæ±ããŸãã
ã»ãšãã©ã®æéãå®ç¿ã§æ§æãããŠããŸã
ãããã¯çè«ã ãã§ã¯çè§£ãã«ãããã®ã§ããå®éã«å®è£
ããŠå®è¡ããªãããããŒã¿ãã©ã®ããã«åŠçãããã®ããã©ãã§ããã«ããã¯ãçºçããã®ããèªåã®ç®ã§ç¢ºèªããŸãã
ãžã¥ãã¢ãšã·ãã¢ãåãããã€ã³ãã¯ããŒã¿åŠçã§ã
APIã ããäœã£ãŠããéçºè
ãããããŒã¿ã®æµããŸã§èšèšã§ããéçºè
ãžãšã¹ãããã¢ããããåºéãæ±ããŸãã
é害ãçºçãããšãããŸãèšèšããŸã
SkipãšRetryãExecutionContextããŒã¹ã®restartãæ±ãã倱æããå°ç¹ããåéããæ§é ã身ã«ã€ããŸãã
åè¬åŸã«å€ããããš
ãã®è¬çŸ©ãçµãããšäœãã§ããããã«ãªããŸããïŒ
以äžã®5ã€ã¯ãè¬çŸ©ãçµããåŸã«ã³ãŒãã§å®è£
ã§ããããããã¯é¢æ¥ã§æ ¹æ ãæã£ãŠèª¬æã§ããããã«ãªãå
容ã§ãã
èšèš
ì²ëЬí ë°ìŽí°ì ì±ê²©ì ë³Žê³ Tasklet곌 Chunk ì§í¥ Step ì€ ë¬Žìì ìžì§ ê³ ë¥Žê³ , ê·ž ìŽì 륌 ì€ëª
í ì ììµëë€.
ãã©ã³ã¶ã¯ã·ã§ã³
Chunk í¬êž°ë¥Œ ìŒë§ë¡ ì¡ìì§ íëšíê³ , ì€íšíì ë ìŽëê¹ì§ 례백ëëì§ë¥Œ DBìì íìží ì ììµëë€.
埩æ§
Skip곌 Retry ì€ ë¬Žìì ìž ìí©ìžì§ 구ë¶íê³ , ì€ëšë Jobì ê·ž ì§ì ë¶í° ë€ì ìŽìŽ ë늎 ì ììµëë€.
æ§èœ
ë©í° ì€ë ë Step곌 íí°ì
ëì ì ì©íŽ ê°ì ë°ìŽí°ë¥Œ ë ì§§ì ìê°ì ì²ëЬí ì ììµëë€.
éçš
JobRepositoryê° ëšêžŽ ë©íë°ìŽí°ë¥Œ ìœìŽ ìŽì ë°°ì¹ê° ì ì€íšíëì§ ì¶ì í ì ììµëë€.
ãã®ãããªæ¹ã«ããããã§ã
ãã®Spring Batchè¬åº§ã¯èª°ã®ããã®è¬åº§ã§ããïŒ
- ãããåŠçãé
ãã£ããé »ç¹ã«å€±æãããããããåå ãæ£ç¢ºã«ææ¡ã§ããŠããªãããã¯ãšã³ãéçºè
- 倧容éããŒã¿åŠçã«ãããŠãã¡ã¢ãªã»æ§èœã®åé¡ã§é害ãçµéšããããšãããéçºè
- Spring Batchã䜿ã£ãŠããããæ§é ãåãããéå¹çã«å®è£
ããŠããéçºè
- é害ãçºçããéã«ãååŠçãšåŸ©æ§ããžãã¯ãã©ã®ããã«èšèšãã¹ããéæ¹ã«æ®ããŠããéçºè
- åãªãCRUDãè¶
ããŠãããŒã¿åŠçäžå¿ã®ã¹ãã«ã磚ããæé·ãããéçºè
éã«ãChunkåäœã®ãã©ã³ã¶ã¯ã·ã§ã³ã®å¢çãSkipãšRetryã®éãããã«ãã¹ã¬ããStepãå®å
šãªæ¡ä»¶ãä»ãã説æã§ããã®ã§ããã°ããã®è¬çŸ©ã¯å¿
èŠãããŸããã
ã«ãªãã¥ã©ã
Spring Batch è¬çŸ©ã«ãªãã¥ã©ã
Spring BatchãåããŠåŠã¶éçºè
ã®ããã®é åºã§æ§æãããŠããŸãããããããªãå¿
èŠãªã®ãã«å§ãŸããæ žå¿æŠå¿µãã¯ãŒã¯ãããŒãèé害æ§ã䞊ååŠçã®é ã«ç¶ããŸãã
ã»ã¯ã·ã§ã³1. è¬çŸ©ç޹ä»
- è¬çŸ©ç޹ä»
- Source Code
- Spring Batch Docs
ã»ã¯ã·ã§ã³ 2. æ§ã
ãªãã¡ã€ã³ã§ãããåŠçããªãå¿
èŠãªã®ã
- çããã¯ãããåŠçãäœã ãšãèãã§ãããã
- Spring BatchãæäŸãããã®ãšã³ã·ã¹ãã ãªãã§ã¯ã®ã¢ãŒããã¯ãã£
- Spring Initializrãéããå®ç¿æ§æããã³ãã«ãèšå®
ã»ã¯ã·ã§ã³3. Spring Batchã®æ žå¿çãªåºæ¬æŠå¿µ
- æåã®JobãšStepãäœæããå®è¡ããã³DBã®ç¶æ
ã確èªãã
- JobRepositoryãšJobLauncherããããŠExecutionContext
- Tasklet Stepã€ã³ã¿ãŒãã§ãŒã¹ã®éäžåæãšã«ã¹ã¿ã Taskletã®å®è£
- ChunkæåStepãã¿ãŒã³ãšãã©ã³ã¶ã¯ã·ã§ã³ã®çžé¢é¢ä¿
ã»ã¯ã·ã§ã³ 4. ã¯ãŒã¯ãããŒïŒReader + Processor + Writer ãã¿ãŒã³
- ããŒã¿ãèªã¿èŸŒã¿ãå å·¥ããæžãèŸŒãæµããå®ç¿ã§æ±ããŸãã
ã»ã¯ã·ã§ã³ 5. èæ
éæ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã® Optional ãã¿ãŒã³
- Skipã»Retryãå«ãåŸ©æ§æŠç¥ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ãæ±ããŸãã
ã»ã¯ã·ã§ã³6. æ§èœåäžã®æ žå¿ã3ã€ã®äžŠååŠçãã¿ãŒã³
- ãã«ãã¹ã¬ããStepãå«ã3ã€ã®äžŠååŠçãã¿ãŒã³ãæ±ããŸãã
æ±ãæè¡ã»å®ç¿ç°å¢
äœã§å®ç¿ããŸãã
- Spring Batch
- Job · Step
- ãã£ã³ã¯
- Tasklet
- Skip · Retry
- ãã«ãã¹ã¬ããã¹ããã (Multi Threaded Step)
- Java
- Spring
- Spring Boot
- spring-framework
- macOS (Apple M3)
Apple M3 Airç°å¢ã§Java 17.0.12 LTSã䜿çšããŠé²ãããšãã£ã¿ã¯VS Codeã䜿ããŸããSpring Initializrã§ãããžã§ã¯ããäœæããæ®µéããäžç·ã«ç¢ºèªããŠãããŸãã
ã«ãªãã¥ã©ã ãŸã§å
šãŠã芧ã«ãªã£ãã
åè¬æéã¯ç¡å¶éã§ããé害ãçºçããéã«ãå¿
èŠãªã»ã¯ã·ã§ã³ã ããèªã¿è¿ãããšãã§ããŸãã
컀늬íëŒ ê·žëë¡ ì€ìµ ììíêž°
誰ãäœããŸããã
çŸåœ¹ãµãŒããŒéçºè
ã»é¢æ¥å®ãå
±åã§å¶äœããŸãã
ãã®è¬çŸ©ã¯ãæ¿æ©ïŒãã³ã®ã§ïŒã®ãã©ãããã©ãŒã ãµãŒããŒéçºè
Hongãšãã«ã«ãªæ¬ç€Ÿ12幎ç®ã®ãµãŒããŒéçºè
ã§ãã颿¥å®ã§ãããChoiãå
±åã§å¶äœããŸããã
ç¥èå
±æè
ã» æ¿æ©ïŒãã³ã®ã§ïŒãã©ãããã©ãŒã ãµãŒããŒéçº
Hong
æ¿æ©ïŒãã³ã®ã§ïŒã§ãã©ãããã©ãŒã ãµãŒããŒéçºãæ
åœããŠããŸããèªãåŠãã æ¹æ³ãå®åã§çŽé¢ããåé¡ã»è§£æ±ºçãå
±æããããã«ãç¥èå
±æè
ãšããŠã®æŽ»åãç¶ããŠããŸããè¬çŸ©ã¯äžäººã§ã¯ãªããçŸè·ã®æ§ã
ãªéçºè
ãšå
±ã«å¶äœããŠããŸãã
- [çŸ] æ¿æ©ïŒãã³ã®ã§ïŒãã©ãããã©ãŒã ãµãŒããŒéçºè
- ã€ã³ããã³ç¥èå
±æè
ã»ããã¯ãšã³ãè¬çŸ©ã倿°éå¶
- [å] ãããã¯ãã§ãŒã³ã»ã¡ã¿ããŒã¹ ããã¯ãšã³ãéçº
ã«ã«ãª ã» 12幎ç®ãµãŒããŒéçºè
ã» é¢æ¥å®
Choi
12幎ç®ã®ããã¯ãšã³ããµãŒããŒéçºè
ãšããŠãã«ã«ãªã§ãµãŒããŒéçºãšé¢æ¥å®ãå
Œä»»ããŠããŸããHongãããšã¯ã«ã³ãã¡ã¬ã³ã¹ã§çžããããè¬çŸ©æŽ»åã®äžç€ãããã£ãšå
±ã«åå ããªãããæ§ã
ãªããŒããäœãäžããŠããŸããã倧æã®çµæŽäžã€ãè¯ãéçºè
ã蚌æããããã§ã¯ãããŸããããäžè¬çãªãã©ãããã©ãŒã ãããå€ãã®ãã©ãã£ãã¯ãšçµéšãç©ãããšãã§ãããšèãããã®çµéšãè¬çŸ©ã«æ³šã蟌ãã§ããŸãã
- [çŸ] ã«ã«ãªæ¬ç€Ÿ ãµãŒããŒéçºè
ã» é¢æ¥å®
- [å] ãœãŠã«4幎å¶ã³ã³ãã¥ãŒã¿å·¥åŠå°æ»
ãããã質å
Spring Batch è¬çŸ©ã®ãããã質å
Spring Batchãšã¯äœã§ããïŒ
Spring Batchã¯ã倧容éããŒã¿ãåŠçããããã®Javaã»SpringããŒã¹ã®ããããã¬ãŒã ã¯ãŒã¯ã§ãããã®ã³ã°ã远跡ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çãäœæ¥çµ±èšãåèµ·åãSkipåŠçãªã©ã®æ©èœãåå©çšå¯èœãªåœ¢ã§æäŸããæ°çŸäžä»¶ä»¥äžã®ããŒã¿ãå®å®çã«åŠçã§ãããããµããŒãããŸãã
JobãšStepãšã¯äœã§ããïŒ
Jobã¯ãããåŠçå
šäœãæãåäœã§ãããStepã¯ãã®Jobãæ§æããå®è¡æ®µéã§ããäžã€ã®Jobã¯è€æ°ã®Stepã«åãããåStepã¯é åºéãããŸãã¯æ¡ä»¶ã«åŸã£ãŠå®è¡ãããŸããã»ã¯ã·ã§ã³3ã§ã¯ãæåã®JobãšStepãå®éã«äœæããŠå®è¡ããDBã®ç¶æ
ãŸã§ç¢ºèªããŸãã
Chunkãšã¯äœã§ããïŒ
Chunkã¯Stepå
ã§äžåºŠã«åŠçããããŒã¿ã®ãããŸãã®åäœã§ããäŸãã°ãChunkãµã€ãºã1,000ã§ããã°ã1,000ä»¶ãèªã¿èŸŒãã§å å·¥ããäžåºŠã«ä¿åããåŸã«ã³ãããããŸãããã©ã³ã¶ã¯ã·ã§ã³ããã®Chunkåäœã§ãŸãšããããããã倱æããå Žåã¯ãã®Chunkã®ã¿ãããŒã«ããã¯ãããŸããã»ã¯ã·ã§ã³3ã§ChunkæåStepãšãã©ã³ã¶ã¯ã·ã§ã³ã®é¢ä¿ãå®ç¿ã§æ±ããŸãã
ReaderãProcessorãWriterã¯ããããäœãããŸããïŒ
ItemReaderã¯åŠçããããŒã¿ãäžã€ãã€èªã¿èŸŒã¿ãItemProcessorã¯èªã¿èŸŒãã ããŒã¿ãå å·¥ãããæ¡ä»¶ã«åããªããã®ãé€å€ãããããItemWriterã¯å å·¥ãããããŒã¿ãChunkåäœã§ãŸãšããŠä¿åããŸããããã3ã€ã®ã³ã³ããŒãã³ããç¹°ãè¿ãå®è¡ãããäžã€ã®ChunkæåStepãæ§æããŸããã»ã¯ã·ã§ã³4ã§ãã®ã¯ãŒã¯ãããŒå
šäœãæ±ããŸãã
TaskletãšChunkæåStepã¯ãããããã©ã®ãããªæã«äœ¿ããŸããïŒ
Taskletã¯äžåºŠå®è¡ããŠçµäºããåçŽãªäœæ¥ã«é©ããŠãããChunkæåStepã¯èªã¿èŸŒã¿ã»å å·¥ã»æžã蟌ã¿ã®æµãã倧éã«ç¹°ãè¿ãæã«äœ¿ããŸãã倧容éåŠçã®ã»ãšãã©ã¯Chunkæåã§ããã»ã¯ã·ã§ã³3ã§Taskletã€ã³ã¿ãŒãã§ãŒã¹ã詳ããèŠãŠã«ã¹ã¿ã å®è£
ãŸã§è¡ã£ãåŸãChunkæåãšãã©ã³ã¶ã¯ã·ã§ã³ã®é¢ä¿ã«ã€ããŠç¶ããŠæ±ããŸãã
ããããéäžã§å€±æããå ŽåãæåããããçŽããªããã°ãªããŸãããïŒ
ããããSpring Batchã¯å®è¡ç¶æ
ãExecutionContextã«èšé²ããŠãããããäžæãããå°ç¹ããåéããããšãã§ããŸããç¹å®ã®ããŒã¿ã ãã«åé¡ãããå Žåã¯ãSkipã§ã¹ãããããããRetryã§å詊è¡ãããããããšãå¯èœã§ããã»ã¯ã·ã§ã³5ã§ããã®åŸ©æ§æŠç¥ãå®ç¿ã§æ±ããŸãã
ãããåŠçã®é床ãã©ã®ããã«äžããŸããïŒ
ãã£ã³ã¯ãµã€ãºã調æŽããããšããå§ããäžã€ã®Readerãè€æ°ã®ã¹ã¬ããã§å
±æããMulti Threaded StepããããŒã¿ãåå²ããŠäžŠåã§å®è¡ããããŒãã£ã·ã§ãã³ã°ã䜿çšããŸããã»ã¯ã·ã§ã³6ã§äžŠè¡åŠçãã¿ãŒã³3ã€ãæ±ãããã¬ãã¥ãŒåç»ã§ãã®ãã¡ã®äžã€ãèŠãããšãã§ããŸãã
Spring Batchãã¹ã±ãžã¥ãŒãªã³ã°æ©èœãæäŸããŠããŸããïŒ
ããããSpring Batchèªäœã«ã¯ã¹ã±ãžã¥ãŒãªã³ã°æ©èœã¯ãããŸãããJobããã€ãã©ã®ãããã®é »åºŠã§å®è¡ãããã¯Springã®ã¹ã±ãžã¥ãŒã©ãŒãå€éšã¹ã±ãžã¥ã©ãŒãæ
åœããSpring Batchã¯ããããŠå®è¡ãããJobãå®å®çã«åŠçãã倱ææã«åŸ©æ§ãã圹å²ãæ
ããŸããäž¡è
ã¯ç«¶åé¢ä¿ã§ã¯ãªãã圹å²ãåãããŠããŸãã
Spring Batchå
¥éè
ã§ãã€ããŠãããŸããïŒ
ã¯ããå
¥éã¬ãã«ã®è¬çŸ©ã§ãã®ã§ããããããªãå¿
èŠãªã®ããšããç¹ããå§ãŸããSpring Initializrã§ãããžã§ã¯ããäœæããæ®µéããäžç·ã«é²ããŠãããŸããJavaãšSpring Bootã®äœ¿çšçµéšãããã°ååã§ãããåŸåã®èé害æ§ã䞊ååŠçã¯ããã§ã«ããããéçšäžã®æ¹ã«ãšã£ãŠãæ°ããå
容ãšãªã£ãŠããŸãã
å®ç¿ç°å¢ã¯ã©ã®ããã«æ§æããŸããïŒ
Apple M3 Airã§Java 17.0.12 LTSãšVS Codeã䜿çšããŠé²ããŸããã»ã¯ã·ã§ã³2ã§Spring InitializrãéããŠãããžã§ã¯ããäœæãããã«ãèšå®ãè¡ãéçšãäžç·ã«æ±ãã®ã§ããã®ãŸãŸã€ããŠããŠããã ããã°å€§äžå€«ã§ãã
ãã§ã«å®åã§Spring Batchã䜿ã£ãŠããŸãããåè¬ããçç±ã¯ãããŸããïŒ
åãããã«äœãããšãšããªããã®æ§é ãªã®ãã説æããããšã¯å¥ç©ã§ããChunkã®å¢çãã©ãã«çœ®ããããSkipãšRetryã®ã©ã¡ããéžãã ãããã«ãã¹ã¬ããStepãå®å
šãªæ¡ä»¶ã¯äœã§ããããä»ããçããããã®ã§ããã°ãã®è¬çŸ©ã¯å¿
èŠãããŸãããããè©°ãŸã£ãŠããŸãã®ã§ããã°ãã»ã¯ã·ã§ã³3ã»5ã»6ããã®çåãè§£æ¶ããŠãããŸãã
Spring Batchè¬çŸ©ã®ã«ãªãã¥ã©ã ã¯ã©ã®ãããªé åºã§ããïŒ
ãããåŠçããªãå¿
èŠãªã®ããšSpring Batchã®ã¢ãŒããã¯ãã£ããå§ãŸããJobã»Stepã»Taskletã»Chunkãšãã£ãæ žå¿æŠå¿µãReaderã»Processorã»Writerã®ã¯ãŒã¯ãããŒãèé害æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã䞊ååŠçãã¿ãŒã³ã®é ã«ç¶ããŸããåè¬æéã¯ç¡å¶éã§ãã
ããŒã¿ãç©ã¿éãªãåã ããæ±ã人ãå€ãããªããã°ãªããŸãã
æåã®Jobãäœæããããšããå§ãŸãã埩æ§ã䞊ååŠçãŸã§ããã¹ãŠå®ç¿ãéããŠç¢ºèªããŸãã
ê°ì ììíêž°
äžç·ã«æé·ããŸããã
éçºè
ãªãŒãã³ãã£ããã«ãŒã
ãã£ãªã¢ãçŸå Žã®ç¶æ³ãæè¡ãå
±æããéçºè
ãªãŒãã³ãã£ãããéå¶ããŠããŸããè¬çŸ©ãèããªããæ°ã«ãªã£ãããšãå®åã®æ©ã¿ãæ°è»œã«å
±æããŠã¿ãŠãã ããã
ãªãŒãã³ãã£ããã«åå ããInstagramãèŠã«è¡ã