Java Кварц JobBuilder.storeDurably () - PullRequest
       3

Java Кварц JobBuilder.storeDurably ()

0 голосов
/ 12 января 2020

У меня есть задание Quartz, которое будет перезапущено при определенных условиях. Если я использую storeDurably (), как показано ниже, то при втором запуске я получу исключение, также показанное ниже. Я понял, что не совсем понимаю, при каких условиях мне следует использовать .storeDurably (). Когда мне следует использовать .storeDurably ()? Насколько я понимаю, когда я планирую свою работу, она будет сохранена в БД, так что она будет «сохранена на длительный срок», но затем будет удалена, когда нет Триггеры указывают на это. Если я использую .storeDurably (), должен ли я также искать экземпляр сохраненного JobDetail, прежде чем пытаться создать новый?

Мой JobBuilder:

private JobDetail buildAmzGetOrderDetailsJobDetail(String purchaseOrderNumber) {

    JobDataMap jobDataMap = new JobDataMap();
    jobDataMap.put("purchaseOrderNumber", purchaseOrderNumber);

    return JobBuilder.newJob(AmzGetOrderDetailsJob.class)
            .withIdentity(purchaseOrderNumber, "amz-get-order-details-jobs") //
            .withDescription("Amz Get Order Details Job") //
            .usingJobData(jobDataMap) //
            .storeDurably() //
            .build();
}

Исключение при повторном запуске:

org.quartz.ObjectAlreadyExistsException: Unable to store Job : 'amz-get-order-details-jobs.Utde8512B', because one already exists with this identification.
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1113)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$2.executeVoid(JobStoreSupport.java:1067)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$VoidTransactionCallback.execute(JobStoreSupport.java:3780)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$VoidTransactionCallback.execute(JobStoreSupport.java:3778)
        at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:245)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJobAndTrigger(JobStoreSupport.java:1063)
        at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:855)
        at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:249)
        at io.paat.factory.quartz.job.AmzGetOrderDetails.scheduleJob(AmzGetOrderDetails.java:42)
        at io.paat.factory.quartz.job.AmzCheckOrdersJob.execute(AmzCheckOrdersJob.java:54)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...