quartz 一次触发执行多次job
时间: 2023-12-11 16:03:36 浏览: 34
在 Quartz 中,一个 Job 可能会被多个 Trigger 触发执行。但是,如果你想要一个 Trigger 触发执行多个 Job,可以使用 Quartz 的 JobChainingJobListener 来实现。
JobChainingJobListener 允许我们在一个 Job 执行完成后自动触发另一个 Job 的执行。这样,你就可以在一个 Trigger 触发的情况下执行多个 Job。
以下是一个实现示例:
```java
// 创建 JobDetail 对象
JobDetail job1 = JobBuilder.newJob(Job1.class).withIdentity("job1").build();
JobDetail job2 = JobBuilder.newJob(Job2.class).withIdentity("job2").build();
// 创建 Trigger 对象
Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("trigger1")
.startNow().build();
// 创建 JobChainingJobListener 对象
JobChainingJobListener listener = new JobChainingJobListener("listener");
listener.addJobChainLink(job1.getKey(), job2.getKey());
// 将 listener 注册到 Scheduler 上
scheduler.getListenerManager().addJobListener(listener);
// 将 JobDetail 和 Trigger 注册到 Scheduler 上
scheduler.scheduleJob(job1, trigger1);
```
在上面的示例中,我们创建了两个 Job:Job1 和 Job2。然后,我们创建了一个 Trigger,并将其与 Job1 关联。接下来,我们创建了一个 JobChainingJobListener 对象,并将其注册到 Scheduler 上。最后,我们将 Job1 和 Trigger 注册到 Scheduler 上。
当 Trigger 触发 Job1 的执行时,JobChainingJobListener 会自动触发 Job2 的执行。这样,一个 Trigger 就可以触发多个 Job 的执行了。