すぐにトリガーするジョブを作成することは可能ですか?ジョブをトリガーしたい場合、現在の日付と時刻でcron式文字列を作成しました-複雑すぎると思いますが、すぐにジョブをトリガーする別の方法はありますか?
前もって感謝します。
Quartz Scheduler に登録されているすべてのジョブは、名前とグループで構成される JobKey によって一意に識別されます。 JobKey インスタンスの triggerJob(JobKey jobKey) を呼び出すことで、指定された JobKey を持つジョブをすぐに起動できます。
//Create a new Job
JobKey jobKey = JobKey.jobKey("myNewJob", "myJobGroup");
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably().build();
//Register this job to the scheduler
scheduler.addJob(job, true);
//Immediately fire the Job MyJob.class
scheduler.triggerJob(jobKey);
注意 :
scheduler
は、アプリケーション全体で使用されるスケジューラインスタンスです。その start() メソッドは、作成後に既に呼び出されている必要があります。
このジョブは、トリガーまたはcronをアタッチできない永続的なジョブです。 triggerJob(JobKey jobKey) を呼び出すことによってのみ、プログラムで起動できます。
ええ、次のTrigger
を使用して、Cron Expressionsを待つ代わりにすぐにジョブを起動します。
String jobName = ""; // Your Job Name
String groupName = ""; // Your Job Group
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(jobName, groupName)
.startNow()
.build();
2つのキー文字列値を使用して、「JobKey」をその場で作成できます。
IScheduler sched = /* however you get your scheduler*/;
sched.TriggerJob(new JobKey("myname", "mygroup"));