๐ ๋ค์ด๊ฐ๋ฉฐ
ํ์ฌ RPA ๊ฐ๋ฐ์๋ก ์ผํ๋ฉฐ ๋ก๋ด๋ค์๊ฒ ์
๋ฌด๋ฅผ ์ค์ผ์ค๋งํ ๋ ํ์์ ์ผ๋ก ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Quartz๋ค. ๊ทธ๋์ RPA ์๋ฃจ์
์ ํ์คํ ๊ฐ๋ฐ๋ง ํ๋ฉด์ ์ค์ผ์ค๋ง ์ปค์คํ
์ ๊น๊ฒ ํ์ง ๋ชปํ๋๋ฐ, ์ด์ ๋ฅ๋ค์ด๋ธํด๋ณด๊ณ ์ถ์ด ์ ๋ฆฌํ๋ค.
Quartz๋? ์คํ ์์ค์ ์๋ฐ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ํ๋ ์์ํฌ. ๋ฐ๋ณต์ ์ด๊ณ ์์ฝ๋ ์์
์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ๋ค์ํ ์ค์ ์ต์
์ผ๋ก ํญ๋์ ์ค์ผ์ค๋ง ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ๋ค.
1. ๊ธฐ๋ณธ ๊ฐ๋
โ Job ยท Trigger ยท Scheduler
Quartz๋ ์ธ ๊ฐ์ง ํต์ฌ ์์๋ก ๋์ํ๋ค. ๋ฌด์์(Job), ์ธ์ (Trigger), ๋๊ฐ ๊ด๋ฆฌํ๋(Scheduler)๋ก ๋๋๋ค.
| ์์ | ์ญํ |
|---|
| Job | ์คํ๋์ด์ผ ํ๋ ์ค์ ์์
์ ๊ตฌํํ ํด๋์ค (๋ฌด์์) |
| Trigger | Job์ด ์ธ์ ์คํ๋ ์ง ์ ์ (ํน์ ์๊ฐยท์ฃผ๊ธฐยท์ด๋ฒคํธ) |
| Scheduler | Job๊ณผ Trigger๋ฅผ ๊ด๋ฆฌํ๊ณ ์คํ ์์ ์ ์ ์ดํ๋ ํต์ฌ |
1
2
3
| Scheduler (๊ด๋ฆฌยท์คํ)
โโ Job "๋ฌด์์ ์คํํ ๊น?" (MyJob.execute)
โโ Trigger "์ธ์ ์คํํ ๊น?" (5์ด๋ง๋ค, ๋งค์ผ 09์ ๋ฑ)
|
2. ์ฌ์ฉ๋ฒ
โ ์์กด์ฑ ์ถ๊ฐ
1
2
3
4
5
6
| <!-- Maven -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
|
โก Job ํด๋์ค ์์ฑ
์คํํ ์์
์ Job ์ธํฐํ์ด์ค์ execute()์ ๊ตฌํํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
| import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// ์ค์ ๋ก ์ํํ ์์
๋ด์ฉ
System.out.println("Quartz Job ์คํ: " + System.currentTimeMillis());
}
}
|
โข TriggerยทScheduler ์ค์
Trigger๋ก ์คํ ์กฐ๊ฑด์ ์ ํ๊ณ , Scheduler๋ฅผ ์์ํด Job์ ๋ฑ๋กํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzExample {
public static void main(String[] args) throws SchedulerException {
// JobDetail ์์ฑ
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob", "group1")
.build();
// Trigger ์์ฑ - 5์ด๋ง๋ค ์คํ
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever())
.build();
// Scheduler ์์ฑ ๋ฐ ์์
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
|
์ ์์๋ MyJob์ 5์ด๋ง๋ค ์คํํ๋๋ก ์ค์ ํ ๊ฒ์ด๋ค.
๐ ์ฃผ์์ฌํญ ๋ฐ ํ
| ํญ๋ชฉ | ๋ด์ฉ |
|---|
| ์ธ๋ฐํ ์ค์ | ์ค์ ์ต์
์ด ๋งค์ฐ ๋ค์ โ ๊ณต์ ๋ฌธ์ ์ฐธ๊ณ ๊ถ์ฅ |
| ์์ธ ์ฒ๋ฆฌ | Job์์ ์์ธ ๋ฐ์ ์ ํด๋น Job์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋จ๋จ โ ์์ธ ์ฒ๋ฆฌ ์ฃผ์ |
| ํด๋ฌ์คํฐ ๋ชจ๋ | ์ฌ๋ฌ ์๋ฒ์ ์์
์ ๋ถ์ฐ์ํฌ ์ ์์ |
๐ ์ ๋ฆฌ
1
2
3
4
5
| Quartz ์ค์ผ์ค๋ง
โโ Job ๋ฌด์์ ์คํํ ์ง (execute ๊ตฌํ)
โโ Trigger ์ธ์ ์คํํ ์ง (์ฃผ๊ธฐยท์๊ฐยท์ด๋ฒคํธ)
โโ Scheduler Job+Trigger ๊ด๋ฆฌ ๋ฐ ์คํ ์์ ์ ์ด
โโ ํน์ง ์ธ๋ฐํ ์ค์ ยท ์์ธ ์ ์ค๋จ ยท ํด๋ฌ์คํฐ ๋ถ์ฐ
|
| ๊ฐ๋
| ํ ์ค ์ ์ |
|---|
| Quartz | ์๋ฐ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ํ๋ ์์ํฌ |
| Job / Trigger / Scheduler | ๋ฌด์์ / ์ธ์ / ๋๊ฐ ๊ด๋ฆฌํ๋ |
Quartz๋ โ๋ฌด์์(Job) ์ธ์ (Trigger) ์คํํ ์งโ๋ฅผ ์ค์ผ์ค๋ฌ๊ฐ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ค. ์ด ์ผ๊ฐ ๊ตฌ์กฐ๋ง ์ดํดํ๋ฉด, ๋ณต์กํ ๋ฐ๋ณต ์์
๋ ์ฒด๊ณ์ ์ผ๋ก ์์ฝยท๊ด๋ฆฌํ ์ ์๋ค.
Comments powered by Disqus.