从不同的可执行文件动态地将作业添加到 运行 Quartz 调度程序
Dynamically Adding jobs to a running Quartz scheduler from different executable
我有一个已启动的调度程序,并且有一个作业 运行正在运行。这是我要 运行ning 的主调度程序线程。
public class MyApp {
Scheduler scheduler1;
public static void main(String[] args) {
run();
}
public static void run(){
try {
JobDetail job = JobBuilder.newJob(Job.class)
.withIdentity("JoeyJob", "group1").build();
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("cronTrigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
.build();
scheduler1 = new StdSchedulerFactory().getScheduler();
scheduler1.start();
System.out.println(scheduler1.getSchedulerInstanceId());
scheduler1.scheduleJob(job,trigger1);
Thread.sleep(1000000);
scheduler1.shutdown();
}
catch(Exception e){
e.printStackTrace();
}
}
我希望 运行 另一个作业在同一个调度程序上使用触发器,但我需要从不同的 java 可执行文件访问它,可能使用调度程序名称或任何此类参数。我意识到调度程序名称 returns 类似于 'defaultScheduler' 和实例 ID returns 'NON_CLUSTERED' 我需要开发一个应用程序到 运行 单个调度程序线程并不断add/remove更新发送电子邮件的工作。因为这将由 servlet 使用进行初始化。有没有一种方法可以从不同的可执行实例的内存中访问这个调度程序。这就是我要找的。
public class Test {
public static void main(String[] args) throws SchedulerException {
run();
}
public static void run()throws SchedulerException{
JobDetail job = JobBuilder.newJob(Job2.class)
.withIdentity("Jake", "group2").build();
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("cronTrigger2", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?"))
.build();
Scheduler scheduler= new StdSchedulerFactory().getScheduler("scheduler-name-something");
scheduler.scheduleJob(job,trigger1);
}
}
有没有办法使用调度程序实例 ID 和调度程序名称来执行此操作?
我查看了文档,没有办法实现我想要的。
我有一个已启动的调度程序,并且有一个作业 运行正在运行。这是我要 运行ning 的主调度程序线程。
public class MyApp {
Scheduler scheduler1;
public static void main(String[] args) {
run();
}
public static void run(){
try {
JobDetail job = JobBuilder.newJob(Job.class)
.withIdentity("JoeyJob", "group1").build();
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("cronTrigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
.build();
scheduler1 = new StdSchedulerFactory().getScheduler();
scheduler1.start();
System.out.println(scheduler1.getSchedulerInstanceId());
scheduler1.scheduleJob(job,trigger1);
Thread.sleep(1000000);
scheduler1.shutdown();
}
catch(Exception e){
e.printStackTrace();
}
}
我希望 运行 另一个作业在同一个调度程序上使用触发器,但我需要从不同的 java 可执行文件访问它,可能使用调度程序名称或任何此类参数。我意识到调度程序名称 returns 类似于 'defaultScheduler' 和实例 ID returns 'NON_CLUSTERED' 我需要开发一个应用程序到 运行 单个调度程序线程并不断add/remove更新发送电子邮件的工作。因为这将由 servlet 使用进行初始化。有没有一种方法可以从不同的可执行实例的内存中访问这个调度程序。这就是我要找的。
public class Test {
public static void main(String[] args) throws SchedulerException {
run();
}
public static void run()throws SchedulerException{
JobDetail job = JobBuilder.newJob(Job2.class)
.withIdentity("Jake", "group2").build();
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("cronTrigger2", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?"))
.build();
Scheduler scheduler= new StdSchedulerFactory().getScheduler("scheduler-name-something");
scheduler.scheduleJob(job,trigger1);
}
}
有没有办法使用调度程序实例 ID 和调度程序名称来执行此操作?
我查看了文档,没有办法实现我想要的。