๋ฐ์ํ 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. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ