主要内容
分布式批处理框架, 采用 spring boot
2, quartz
2 集群
本文以 spring boot
V2.2.5 版本为例说明。
更新历史
无
依赖
POM文件大体如下:
1 | <parent> |
配置
1 | spring: |
样例代码
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
25package com.mandalat.ehealth.job;
import cc.giveme5.common.service.ComSystemParameterService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.time.LocalDateTime;
public class AJob implements Job {
private ComSystemParameterService parameterService;
private String port;
public void execute(JobExecutionContext context) {
parameterService.findAll();
System.out.println(port + "--------------------" + LocalDateTime.now());
}
}job config
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
29package com.mandalat.ehealth.common.config;
import com.mandalat.ehealth.job.AJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
public class JobConfiguration {
public JobDetail jobADetails() {
return JobBuilder.newJob(AJob.class).withIdentity("sampleJobA")
.storeDurably().build();
}
public Trigger jobATrigger() {
return TriggerBuilder.newTrigger()
.forJob(jobADetails())
.withIdentity("sampleTriggerA")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * ? * * *"))
.build();
}
}
测试
分别在 8080 和 8081 上 启动服务;
可以看到只有一台服务调用到了 AJob
中的方法;
把这台服务关闭, 5秒后可以看到另一台服务调用到了 AJob
中的方法;
说明Quartz 的集群分布式部署成功.