Spring Boot Quartz:石英可以在运行时为每个节点计划一个作业(集群模式)吗?

时间:2020-01-30 13:56:50

标签: java spring spring-boot microservices quartz-scheduler

我正在为微服务架构的java spring boot项目创建调度程序机制。我正在使用启用集群模式的石英。我已经为spring配置了schedulerFactory bean,jobFactory bean和triggerFactory bean,以便可以用spring注入它们。因此,spring在启动时会为我创建所有工厂bean。而且由于quartz使用这些工厂bean(用于创建bean),因此在我的上下文中(每个节点)将有6个bean:每个节点在启动时都使用schedulerFactoryBean,schedulerBean,jobFactoryBean,jobBean,triggerFactoryBean和factoryBean。

我可以将这些bean注入控制器中,并像操纵它们一样,甚至可以创建新的调度程序,作业和触发器。

据我所知,quartz仅使工厂bean通过数据库保持同步。(在启动时,每个节点都会在相关表上创建一条记录,说“嘿,我在这里”)。

这是我的问题。当我想通过rest端点创建一个调度程序bean时,我必须向每个节点发送相同的请求。我想让石英做的是:我只想向一个节点发送一个请求,而其他节点应该同步其自身(因为我有集群结构,所以接收者节点将是随机的。)

我的第二个问题是: 由于bean被保留在堆中,因此每次启动时,都会刷新运行时创建的对象。我希望他们坚持下去。石英能做到吗?反正我能做到这一点吗?

谢谢。

0 个答案:

没有答案
相关问题