1

休止状態を使用して mysql データベースにリマインダー エンティティを保存しています。ここで、リマインダーの時間が来るたびに、アプリケーションに対してイベントを発生させる必要があります。

これを実装するにはどうすればよいですか。休止状態のインターセプターとイベントを調べました。基本的に作成、保存、更新、または削除時にトリガーされますが、テーブル内のフィールドの 1 つを監視し、リマインダーの時間になったときにイベントを発生させる必要があります。

cron ジョブの構成についても読みましたが、リマインダー通知をユーザー GUI に表示する必要があるため、アプリケーションで時間通りにイベントを実行する必要があります。

どんな提案でも大歓迎です。

4

1 に答える 1

1

Quartz ( http://quartz-scheduler.org/ ) を見てください。それはあなたにいくつかの可能性を与えます。1 つの可能性は、リマインダー エンティティを保存すると同時にリマインダー ジョブをスケジュールすることです。別の方法として (おそらくより効果的に)、定期的に実行するジョブをスケジュールし、次回の実行までに予定されているリマインダー エンティティをデータベースにクエリすることもできます。次に、この定期的なジョブは、リマインダー エンティティごとにリマインダー ジョブをスケジュールします。Quartz ジョブを送信するサンプル コード:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();

JobDataMap map = new JobDataMap();
/* put anything necessary here. */

JobDetail job = JobBuilder.newJob()
        .withIdentity("MyReminderJobName")
        .withDescription("Reminder Job")
        .usingJobData(map)
        .ofType(MyReminderJob.class)
        .build();       

SimpleScheduleBuilder once = simpleSchedule().repeatSecondlyForTotalCount(1);
Date reminderDate = new Date(); //reminder event date


Trigger trigger = newTrigger()
        .forJob(job)
        .withSchedule(once)
        .startAt()             
        .build();

scheduler.scheduleJob(job, trigger);
于 2013-05-08T13:53:43.473 に答える