postgresql—在 Spring 一段时间后执行方法的最佳方式

js81xvg6  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(344)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
用户发送产品请求。如果9小时内没有卖家回复,系统应将此请求发送给其他拥有类似产品的卖家。
调度程序不是我的选择,因为对于用户发送的每个请求,它应该正好是9个小时。
那么,怎样才能做到这一点呢?
p、 请求、用户等存储在postgres数据库中。

13z8s7eq

13z8s7eq1#

我知道这是一个沉重的框架,但我的解决方案,任何复杂的调度是石英http://www.quartz-scheduler.org/documentation/quartz-2.3.0/quick-start.html
作业数据可以持久化到数据库,具有内置的心跳、锁定、群集、误发处理、取消。。。一个成熟的调度框架。
一个简单的触发器就足以满足您的用例,从它们的示例来看:

// get a "nice round" time a few seconds in the future...
    Date startTime = DateBuilder.nextGivenSecondDate(null, 15);

    // job1 will only fire once at date/time "ts"
    JobDetail job = newJob(SimpleJob.class).withIdentity("job1", "group1").build();

    SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1").startAt(startTime).build();

    // schedule it to run!
    Date ft = sched.scheduleJob(job, trigger);

困难的部分是在您的项目中完成quartz的初始设置,如果您希望在将来某个时间(有或没有重复)有其他可靠触发的场景,那么这是值得的。

相关问题