web-dev-qa-db-ja.com

java quartzスケジューラはすぐに新しいジョブを起動します

すぐにトリガーするジョブを作成することは可能ですか?ジョブをトリガーしたい場合、現在の日付と時刻でcron式文字列を作成しました-複雑すぎると思いますが、すぐにジョブをトリガーする別の方法はありますか?

前もって感謝します。

28
user590586

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) を呼び出すことによってのみ、プログラムで起動できます。

28
Ken Chan

ええ、次のTriggerを使用して、Cron Expressionsを待つ代わりにすぐにジョブを起動します。

    String jobName = ""; // Your Job Name
    String groupName = ""; // Your Job Group
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(jobName, groupName)
                .startNow()
                .build();
50
Rohit Bansal

2つのキー文字列値を使用して、「JobKey」をその場で作成できます。

IScheduler sched = /* however you get your scheduler*/;

sched.TriggerJob(new JobKey("myname", "mygroup"));
0
granadaCoder