2、分布式调用之 quartz Java 编程
•
后端
这里写目录标题
-
-
- 引入依赖
- 默认配置文件
- 创建 Job
- 创建 Trigger
- 创建 Scheduler
-
引入依赖
org.quartz-scheduler
quartz
2.3.0
默认配置文件
org.quartz.scheduler.instanceName: DefaultQuartzScheduler org.quartz.scheduler.rmi.export: false org.quartz.scheduler.rmi.proxy: false org.quartz.scheduler.wrapJobExecutionInUserTransaction: false org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount: 10 org.quartz.threadPool.threadPriority: 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true org.quartz.jobStore.misfireThreshold: 60000 org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
创建 Job
实现唯一的方法 execute(),方法中的代码就是任务执行的内容。此处仅输出字符串。
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("假发在哪里买的");
}
}
在测试类 main()方法中,把 Job 进一步包装成 JobDetail。
必须要指定 JobName 和 groupName,两个合起来是唯一标识符。
可以携带 KV 的数据(JobDataMap),用于扩展属性,在运行的时候可以从 context
获取到
JobDetail jobDetail = JobBuilder.newJob(MyJob1.class)
.withIdentity("job1", "group1")
.usingJobData("gupao","2673")
.usingJobData("moon",5.21F)
.build();
创建 Trigger
在测试类 main()方法中,基于 SimpleTrigger 定义了一个每 2 秒钟运行一次、不断
重复的 Trigger:
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.build();
创建 Scheduler
在测试类 main()方法中,通过 Factory 获取调度器的实例,把 JobDetail 和 Trigger
绑定,注册到容器中。
Scheduler 先启动后启动无所谓,只要有 Trigger 到达触发条件,就会执行任务
SchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start();
注意这里,调度器一定是单例的。
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/be57424e90.html
