๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

Spring/Spring Batch12

Spring Batch (12) Retry ๐Ÿ”— Spring Batch Retry (Tasklet ๊ธฐ๋ฐ˜) ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๊นƒํ—ˆ๋ธŒ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :) ์„œ๋น„์Šค์—์„œ ์žฌ์‹œ๋„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์–ธ์ œ์ผ๊นŒ์š”? ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ•ด ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋Š” ์žฌ์‹œ๋„๋ฅผ ํ•˜๋”๋ผ๋„ ๋™์ผํ•˜๊ฒŒ ์‹คํŒจํ•  ๊ฒฝ์šฐ๊ฐ€ ํฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ์™€ ๊ฐ™์€ ์ผ์‹œ์ ์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š” ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค I/O์™€์˜ ํƒ€์ž„์•„์›ƒ, API ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ํƒ€์ž„์•„์›ƒ ๋“ฑ์ด ์žˆ๊ฒ ๋„ค์š”. ์ตœ๊ทผ ์‚ฌ๋‚ด์—์„œ ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ„ํ—์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. reactor.core.Exceptions$ReactiveException: io.netty.channel.unix.Errors$NativeIoExc.. 2023. 3. 4.
Spring Batch (11) Repeat ๐Ÿ”— Spring Batch Repeat Batch Processing๋Š” ๋‹จ์ˆœ ์ตœ์ ํ™” ๋˜๋Š” ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์„ ์ „๋žตํ™”ํ•˜๊ณ  ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ์œ„ํ•ด Spring Batch์—์„œ๋Š” ๋ฐ˜๋ณต ์ž‘์—…์„ ์ œ์–ดํ•˜๋Š” RepeatOperation ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋Š” RepeatTemplate ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค ๐Ÿ”— ๋ฐ˜๋ณต ์ข…๋ฃŒ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ํ•ญ๋ชฉ Spring Batch์—์„œ์˜ ๋ฐ˜๋ณต ์ž‘์—…์— ๋Œ€ํ•œ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ๋Š” RepeatTemplate ํด๋ž˜์Šค์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. RepeatStatus ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ Enum 2. CompletionPolicy RepeatTemplate ๋‚ด๋ถ€์—์„œ ๋ฐ˜๋ณต ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฃŒ๋Š” CompletionPolicy์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. .. 2023. 1. 15.
Spring Batch (10) @JobScope, @StepScope ๐Ÿ”— Spring Batch @JobScope, @StepScope ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” JobParametersValidator์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ์š” ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Job ์‹คํ–‰ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultJobParametersValidator ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, JobParametersValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์ •๋ฆฌํ•  @JobScope, @StepScope๋Š” ์ง€๋‚œ Spring Batch Job ํฌ์ŠคํŒ…์—์„œ JobParameters๋ฅผ ๋ฐ›์„ ๋•Œ ๊ฐ„๋žตํžˆ ์‚ฌ์šฉ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋กœ ์ƒ์„ฑ : JobParameterBuilder SPEL ์‚ฌ์šฉ : @Value(โ€œ#{jobParameter[reques.. 2022. 12. 8.
Spring Batch (9) JobParametersValidator ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobLauncher๋Š” ์‹ค์ œ Spring Batch Job์„ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์˜ JobLauncherApplicationRunner ํด๋ž˜์Šค๊ฐ€ Job์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ JobParametersValidator ๊ธฐ๋ณธ ๊ฐœ๋… Job ์‹คํ–‰ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultJobParametersValidator ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, JobParametersValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜๋„ .. 2022. 11. 13.
Spring Batch (8) JobLauncher ๐Ÿ“Ž JobLauncher ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobRepository๋Š” Spring Batch ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ JobInstance, JobExecution, StepExeuction ๋“ฑ Batch์™€ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ์˜ CRUD ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch Job์˜ ์‹คํ–‰ ์ฃผ์ฒด์ธ JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ JobLauncher ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch Job์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ•  Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉฐ ์š”์ฒญ๋œ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” JobLauncherA.. 2022. 11. 11.
Spring Batch (7) JobRepository ๐Ÿ“Ž JobRepository ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ ExecutionContext์— ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ExecutionContext๋Š” Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹์˜ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€ ์•ˆ๋˜์ง€๋งŒ, ๋™์ผํ•œ Job ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ Step ์‚ฌ์ด์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Batch Job ๋‚ด์˜ Step ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ์กฐ์ž‘์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ExecutionContext๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์— Job & JobParameters๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•œ ํ›„ JobIn.. 2022. 11. 8.
Spring Batch (6) ExecutionContext ๐Ÿ“Ž ExecutionContext ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Step, StepExecution์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” JobExecution ๋ฐ StepExecution ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ExecutionContext์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch ExecutionContext (JobExecution, StepExecution) ๐Ÿ“Œ ExecutionContext ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ ๊ณต์œ  ๋ฒ”์œ„ Job ๋ฒ”์œ„ - ๊ฐ Job์˜ JobExecution์— ์ €์žฅ๋˜๋ฉฐ ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€.. 2022. 11. 5.
Spring Batch (5) Step, StepExecution ๐Ÿ“Ž Step, StepExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Job, JobInstance, JobParameter, JobExecution์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ธ Step, StepExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Step Spring Batch StepExecution ๐Ÿ“Œ Step ๊ธฐ๋ณธ ๊ฐœ๋… Step์€ ๋…๋ฆฝ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ Batch Job์„ ์บก์Šํ™”ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด Step์—๋Š” ์‹ค์ œ Batch ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ Step์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ„๋‹จํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋“  Job์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Step์œผ๋กœ.. 2022. 11. 3.
Spring Batch (4) Job, JobInstance, JobParameters, JobExecution ๐Ÿ“Ž Job, JobInstance, JobParameters, JobExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ Meta Data Schema์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์˜ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด์ธ JobInstance, JobParameters, JobExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Job Spring Batch JobInstance Spring Batch JobParameters Spring Batch JobExecution ๐Ÿ“Œ Job ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐฐ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์˜ ๊ฐœ๋…์œผ๋กœ ์ „์ฒด ๋ฐฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์บก์Šํ™”ํ•œ ์—”ํ‹ฐํ‹ฐ Job Configuration์„ ํ†ตํ•ด ์ƒ.. 2022. 11. 1.
Spring Batch (3) DB ์Šคํ‚ค๋งˆ ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch DB ์Šคํ‚ค๋งˆ ๋ถ„์„ ๐Ÿ“Œ Spring Batch DB ์Šคํ‚ค๋งˆ ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ ๊ฐœ์š” ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ, ์„ธํŒ… ๋ฐ ๊ฐ„๋‹จํ•œ Job ์‹คํ–‰์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ Meta Data Schema์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Meta Data Schema ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ๋“ค(Job, Step, JobParameters ๋“ฑ)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ, ์—…๋ฐ์ดํŠธ, ์กฐํšŒ ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ‚ค๋งˆ ์ œ๊ณต ๊ณผ๊ฑฐ ๋ฐ ํ˜„์žฌ์˜ Batch ์‹คํ–‰์— ๋Œ€ํ•œ ์ •๋ณด(์„ฑ๊ณต, ์‹คํŒจ ์—ฌ๋ถ€)๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์„œ ๋ฐฐ์น˜์šด์˜ ๋ฐ ์žฅ์• ์™€ ๊ด€๋ จ๋œ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ DB์™€ ์—ฐ๋™ํ•  ๊ฒฝ์šฐ ํ•„์ˆ˜์ ์œผ๋กœ ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•จ DB ์Šคํ‚ค.. 2022. 10. 30.
๋ฐ˜์‘ํ˜•