如何在Java的石英调度程序中取消对作业触发器的调度?

问题描述 投票:0回答:1

我正在尝试为在Quartz中创建的特定作业安排触发器的时间表。我有一个包含关联触发器的电子邮件作业,该触发器计划在两个小时后运行。我可以使用jobGroupjobNamejobName/ jobId是“ 28d5f25e-0669-4570-bdb2-b4e865fcdc02”,而jobGroup是“电子邮件工作”。触发键似乎也是正确的。

String jobName = cancelEmailScheheduleRequest.get("jobName"); //correct
String jobGroup = cancelEmailScheheduleRequest.get("jobGroup"); //correct jobGroup
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup); // returns object {name: "4dc25e67-10fa-4e2b-8ca0-c91c024a9a05", group: "email-jobs"}
Map<String, String> response = new HashMap<>();
try {
    if (scheduler.checkExists(triggerKey)) { //returns false instead of true
        scheduler.unscheduleJob(triggerKey);
        response.put("message", "Email Unscheduled");
        return ResponseEntity.ok(response);
    } else {
        response.put("message", "No such Email to  Unschedule");
        return ResponseEntity.ok(response);
    }
} catch (SchedulerException e) {
    e.printStackTrace();
    response.put("message", "Some Error occurred");
    return ResponseEntity.ok(response);
}

但是行scheduler.checkExists(triggerKey)返回FALSE,而该行应该返回true,因此我的触发器不会被调度。因此执行else条件,并且返回的消息为No such Email to Unschedule

java quartz-scheduler
1个回答
0
投票

scheduler.checkExists(triggerKey)将在您放置作业名称和作业组以获取触发键时返回false。您需要使用触发器名称和触发器组来获取triggerKey。

© www.soinside.com 2019 - 2024. All rights reserved.