【问题标题】:JobData added to Trigger not passed to Job in Quartz添加到触发器的 JobData 未传递给 Quartz 中的 Job
【发布时间】:2017-02-08 17:53:56
【问题描述】:

我在调度程序中添加了一个持久作业。在运行时,我正在使用以下代码构建触发器:

Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity(new TriggerKey(triggerKey))
                    .forJob(Constants.CAMPAIGN_MAILING_JOB_KEY)
                    .usingJobData("test", "test")
                    .startAt(new Date(runTime))
                    .build();

然后我使用 , 来安排这项工作,

scheduler.scheduleJob(trigger);

作业已正确执行,但是 Jobdata(“test”字符串参数)在作业中给了我 null。这是我的工作代码,

public class CampaignMessageSendingJob implements Job{
public String campaignId;
public String messageId;

@Override
public void execute(JobExecutionContext jobContext) throws JobExecutionException {
    System.out.println("This JOb Was called at"+System.currentTimeMillis());

    JobKey key = jobContext.getJobDetail().getKey();
    JobDataMap map= jobContext.getMergedJobDataMap();
    System.out.println(map.getString("test")); //This is printing NULL

}

public String getCampaignId() {
    return campaignId;
}

public void setCampaignId(String campaignId) {
    this.campaignId = campaignId;
}

public String getMessageId() {
    return messageId;
}

public void setMessageId(String messageId) {
    this.messageId = messageId;
}

}

我在这里错过了什么?

使用mongodb作为JobStore实现

【问题讨论】:

    标签: java mongodb quartz-scheduler


    【解决方案1】:

    String value=context.getJobDetail().getJobDataMap().get("test")

    请尝试以上解决方案

    【讨论】:

    • System.out.println(jobContext.getMergedJobDataMap().getString("test")); --NULL System.out.println(jobContext.getJobDetail().getJobDataMap().getString("test")); --NULL System.out.println(jobContext.getTrigger().getJobDataMap().getString("test")); --NULL
    • context.getJobDetail().getJobDataMap().get("test")
    • 不,它没有'
    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多