我正在使用休眠将提醒实体存储在 mysql 数据库中。现在我需要在提醒时间到期时向应用程序触发一个事件。
我应该如何实现这一点,我已经查看了休眠拦截器和事件。基本上是在创建、保存、更新或删除时触发的,而我需要监视表中的一个字段并在提醒时间到期时触发一个事件。
我还阅读了有关配置 cron 作业的信息,但我需要在应用程序中按时启动事件,因为必须在用户 GUI 上显示提醒通知。
任何建议将不胜感激。
看看 Quartz ( http://quartz-scheduler.org/ )。它给了你一些可能性。一种可能性是在存储提醒实体的同时安排提醒作业。或者(并且可能更有效)您可以安排一个定期运行的作业,并在数据库中查询到期的提醒实体,直到下一次运行。然后这个周期性作业将为每个提醒实体安排一个提醒作业。提交石英作业的示例代码:
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);