TestAddRealtimeJob.java
3.65 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.yoho.kisjob.demo;
import java.util.Calendar;
import java.util.Date;
import javax.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yoho.kisjob.common.meta.JobMeta;
import com.yoho.kisjob.common.meta.JobMetaBuilder;
import com.yoho.kisjob.common.meta.JobRunType;
import com.yoho.kisjob.common.meta.JobType;
import com.yoho.kisjob.common.meta.TimerMetaBuilder;
import com.yoho.kisjob.common.utils.NodeUtil;
import com.yoho.kisjob.common.utils.RandomUtils;
import com.yoho.kisjob.jobnode.node.NodeRegister;
import com.yoho.kisjob.reg.core.RegistryCenter;
@Service
@Slf4j
public class TestAddRealtimeJob {
@Autowired
private RegistryCenter registryCenter;
@Autowired
private NodeRegister nodeRegister;
@PostConstruct
public void doAdd() {
log.info("Start an async thread to insert jobs.");
new Thread(new AsyncThread()).start();
}
class AsyncThread implements Runnable {
@Override
public void run() {
log.info("Start to insert jobs.");
int i = 1;
while (i++ < 100) {
try {
Thread.sleep(60000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (i % 4 == 0) {
addRealtimeJob();
} else if (i % 4 == 1) {
addDistributedCronJob();
} else if (i % 4 == 2) {
addEveryDayJob();
} else {
addDistributedJob();
}
}
}
private void addRealtimeJob() {
JobMeta jobMeta = JobMetaBuilder
.newJob(nodeRegister.getNodeGroup(),
"job_demo_" + NodeUtil.getCurrentNodeIp() + "_" + RandomUtils.getRandom())
.jobType(JobType.SingleJob).description("This is a auto-generated realtime job.")
.jobRef("testBaseJob").withTimer(TimerMetaBuilder.newTimer(JobRunType.RealtimeJob).build()).build();
registryCenter.registerJob(jobMeta);
}
private void addEveryDayJob() {
// 建一个每天执行的定时任务 执行时间为当前时间往后移5分钟
Date currentDate = new Date();
Calendar c = Calendar.getInstance();
c.setTime(currentDate);
c.add(Calendar.MINUTE, 5);
StringBuffer sb = new StringBuffer();
sb.append(c.get(Calendar.SECOND)).append(" ").append(c.get(Calendar.MINUTE)).append(" ")
.append(c.get(Calendar.HOUR_OF_DAY)).append(" * * ?");
JobMeta jobMeta = JobMetaBuilder
.newJob(nodeRegister.getNodeGroup(),
"job_demo_" + NodeUtil.getCurrentNodeIp() + "_" + RandomUtils.getRandom())
.jobType(JobType.SingleJob).description("This is a auto-generated daily job.")
.jobRef("testBaseJob")
.withTimer(TimerMetaBuilder.newTimer(JobRunType.CronJob).cron(sb.toString()).build()).build();
registryCenter.registerJob(jobMeta);
}
private void addDistributedJob() {
JobMeta jobMeta = JobMetaBuilder
.newJob(nodeRegister.getNodeGroup(),
"job_distributed_" + NodeUtil.getCurrentNodeIp() + "_" + RandomUtils.getRandom())
.jobType(JobType.ElastaicJob).description("This is a auto-generated distributed job.")
.mapper("testMapper").executor("testExecutor")
.withTimer(TimerMetaBuilder.newTimer(JobRunType.RealtimeJob).build()).build();
registryCenter.registerJob(jobMeta);
}
private void addDistributedCronJob() {
JobMeta jobMeta = JobMetaBuilder
.newJob(nodeRegister.getNodeGroup(),
"job_distributed_" + NodeUtil.getCurrentNodeIp() + "_" + RandomUtils.getRandom())
.jobType(JobType.ElastaicJob).description("This is a auto-generated distributed cron job.")
.mapper("testMapper").executor("testExecutor")
.withTimer(TimerMetaBuilder.newTimer(JobRunType.CronJob).cron("0 * * * * ?").build()).build();
registryCenter.registerJob(jobMeta);
}
}
}