私のアプリケーションでは、毎日1000回以上のトリガーが発生することがあります。SchedulerFactoryの1つのインスタンスには、いくつのトリガーがありますか?
- 朝(午前9時)
- 午後(午後1時)
- 夕方(午後6時)
- 夜(午後10時)
とのそれぞれに:これらのそれぞれは、4つのカテゴリーに分類されますこれらの時間は、トリガの発砲された100があります。以下のコード
SchedulerFactory schdFact = new StdSchedulerFactory();
Scheduler schd;
for(ecah morningSchedulers){
// some logic for instantiating trigger
AbstractTrigger trigger = (AbstractTrigger) newTrigger().withSchedule(cronSchedule("0 0"+mAlert+"0,0,0 * * ?")).build();
trigger.setStartTime(strtDat);
trigger.setEndTime(endDat);
final JobDetail job = newJob(AlertJob.class).build();
schd.scheduleJob(job, trigger);
}
が、私はここに2つの質問
を持っている私は、forループ内のスケジューラをインスタンス化や外部と同じスケジューラに多くのトリガーをスケジュールする必要があります。すなわちschd = schdFact.getScheduler();この行はどこに書きますか?(ループの内側または外側)
これらのトリガーの一部を再スケジュールする必要があります。すなわち、何らかの状態で停止し、再び開始する。
リンクありがとうございます。はい、何千ものトリガーがあります。トリガーとトリガーの実行はどういう意味ですか?私のアプリケーションは、私が定義したこれらの4回で患者にSMSを送るでしょう。そして各ユーザーにはいくつかの処方箋があります。これらの処方にはそれぞれ開始日と終了日があります。だからこの場合、私はいくつかのトリガーを正しく開始しなければなりませんか?それぞれに異なるデータがあるため、タイミングは類似しています(午前9時、午後5時、午後10時)。では、これらのトリガーをデータベースなどに保存する必要がありますか?それは、jdbcストレージの意味です。それがどのように私を助けますか? – Preethi
@Preethi:数十万人の患者に到達すると、トリガーは多くのメモリを占有します。また、再起動後にトリガーを再作成することについて覚えておく必要があります。そして、その期間中にあなたのアプリケーションがダウンしていたら?あなたの一般的なアプローチは非常に良いですが、4つのトリガ(1時間に1つ)だけを考慮し、所定の時間に薬を飲むべきすべての患者にバッチSMSを送信してください。これはより良いスケールになるかもしれません。 –