Я пытаюсь создать Job
в Quartz 1.6, но с необходимостью выполнить только один раз, потому что у меня есть два тестовых экземпляра с одинаковой версией файла .war.
Это мой TestPlugin
класс, Job
будет выполняться каждые 60 секунд:
public class TestPlugin implements PlugIn {
public TestPlugin() {
super();
}
public void destroy() {
}
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException {
try {
JobDetail job = JobBuilder.newJob(TestDemonio.class)
.withIdentity("anyJobName", "group1").build();
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("anyTriggerName", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/60 * * ? * * *"))
.build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.scheduleJob(job, trigger);
scheduler.start();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
Затем у меня есть класс TestExecute
для вывода простого вывода:
@DisallowConcurrentExecution
public class TestDemonio implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("QUARTZ JOB MESSAGE");
}
}
Я исследовал, как достичь желаемого, добавив аннотацию @DisallowConcurrentExecution
, чтобы выполнить задание только один раз, но я получаю сообщение, которое печатается в каждом экземпляре.
Это мой файл quartz.properties:
# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 10
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
org.quartz.jobStore.misfireThreshold: 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
@DisallowConcurrentExecution
, предположительно, обслуживает выполнение одного задания на одном узле. За несколько узлов отвечает кварцевая кластеризация. - person Ankur   schedule 06.08.2019necessity to execute only once
иwill be executed every 60 seconds
исключают друг друга. Пожалуйста, поясните желаемое поведение - person Nikolai Shevchenko   schedule 06.08.2019