我正在为微服务架构的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被保留在堆中,因此每次启动时,都会刷新运行时创建的对象。我希望他们坚持下去。石英能做到吗?反正我能做到这一点吗?
谢谢。