博客
关于我
Quartz基本使用(二)
阅读量:795 次
发布时间:2023-03-03

本文共 2813 字,大约阅读时间需要 9 分钟。

一、创建JobDetail及Trigger实例

通过JobBuilder创建JobDetail实例,可以使用usingJobData方法传递参数。以下是创建一个带有不同参数类型的JobDetail实例的示例:

JobDetail jobDetail = (JobDetail) JobBuilder.newJob(HelloJob.class)  
.withIdentity("myJob", "groupOne")
.usingJobData("message", "这是一条JobDetail")
.usingJobData("FloatValue", 30.1415F)
.build();
同理,可以创建一个SimpleTrigger实例,设置相应的触发器配置:
```java
SimpleTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.startNow()
.usingJobData("messages", "这是一条trigger")
.usingJobData("DoubleValue", 2.4D)
.build();

二、接收参数

在JobExecution的execute方法中,可以通过JobExecutionContext获取JobDetail和Trigger的相关信息,并从JobDataMap中获取参数值:

public void execute(JobExecutionContext context) throws JobExecutionException {  
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("开始打印时间:" + sdf.format(new Date()));
System.out.println("Hello world!");
JobDetail jobDetail = context.getJobDetail();
System.out.println("任务组:" + jobDetail.getKey().getGroup());
System.out.println("任务名称:" + jobDetail.getKey().getName());
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
System.out.println("message:" + jobDataMap.getString("message"));
System.out.println("FloatValue:" + jobDataMap.getFloat("FloatValue"));
Trigger trigger = context.getTrigger();
System.out.println("调度组:" + trigger.getKey().getGroup());
System.out.println("调度名称:" + trigger.getKey().getName());
JobDataMap tigDataMap = context.getTrigger().getJobDataMap();
System.out.println("messages:" + tigDataMap.getString("messages"));
System.out.println("DoubleValue:" + tigDataMap.getDouble("DoubleValue"));
}

三、通过set方法获取参数

除了使用JobDataMap获取参数值,可以通过类中的setter方法将参数赋值到相应的变量中。以下是一个示例:

private String message;  
private String messages;
private Float FloatValue;
private Double DoubleValue;
public void setMessage(String message) {
this.message = message;
}
public void setMessages(String messages) {
this.messages = messages;
}
public void setFloatValue(Float FloatValue) {
this.FloatValue = FloatValue;
}
public void setDoubleValue(Double DoubleValue) {
this.DoubleValue = DoubleValue;
}
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("开始打印时间:" + sdf.format(new Date()));
System.out.println("Hello world!");
System.out.println("message:" + message);
System.out.println("FloatValue:" + FloatValue);
System.out.println("messages:" + messages);
System.out.println("DoubleValue:" + DoubleValue);
}

转载地址:http://xzxfk.baihongyu.com/

你可能感兴趣的文章