如何解决具有固定日期而非系统默认日期的Quartz Scheduler
我正在尝试为Quartz作业编写集成测试。测试的输入参数从固定的时间点开始工作-即now
=时代(1970-01-01)。因此,作业已配置为在now + 30 seconds
运行。这样做是为了避免将来在不同时间运行测试时出现任何怪异现象。
我想测试Quartz作业的行为,并确保在触发触发器时执行正确的操作,但是Quartz使用系统日期(我认为),并且触发器从不触发。有没有一种方法可以配置初始化石英的日期/时间?
出于测试目的,我目前像这样初始化石英调度程序:
@Bean
public Scheduler scheduler() throws SchedulerException {
return StdSchedulerFactory.getDefaultScheduler();
}
工作:
return newJob()
.ofType(HelpfulJob.class)
.withIdentity(jobKey(event))
.withDescription("Job-" + id)
.usingJobData("id",id)
.build();
并触发:
return newTrigger()
.forJob(jobDetail)
.withIdentity(jobDetail.getKey().getName(),jobDetail.getKey().getGroup())
.withDescription("Trigger-" + id)
.startAt(new Date(now().plusSeconds(30).toInstant().toEpochMilli())) // now = 1970-01-01
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0))
.build();
Quartz使用JDBC JobStore,它在Postgres上实现。对于集成测试,Postgres实例在Docker容器中运行(通过Testcontainers管理)
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。