我有一个Spring Boot实例的集群环境。该实例计划每天发送一次电子邮件,我正在使用Quartz Job Scheduler。然而,电子邮件正在由所有实例发送,我需要它只由一个实例发送。是否可以将Quartz调度器配置为仅在一个实例上启动作业,我不在乎哪个实例。
在创建JobDetail对象之前,您的作业必须带有注释@DisallowConcurrentExecution。这是一个标记,表示您只需要在一个实例上运行作业。
你也可以看看这个项目的案例:
https://github.com/lukas-krecan/ShedLock
当Quartz群集时,如何查明某个特定作业当前是否在Quartz中运行? “获取正在运行的作业”问题的标准答案是使用,但是根据javadoc的说法,这在集群环境中不起作用。 那有什么诀窍?
问题内容: 我在集群环境中将Quartz Scheduler用作Spring bean。 我有一些用@NotConcurrent注释的作业,它们每个集群运行一次(即,仅在一个节点中,仅在一个线程中)。 现在,我需要在集群的每个节点上运行一项作业。我删除了@NotConcurrent批注,但是它仅在一台计算机上的每个线程上运行。它不会在其他节点上触发。 我应该用什么来注释作业? 示例:带注释的Job
我有一个java应用程序,计划在每天晚上的某个时间运行一次。如果满足条件,应用程序将发送电子邮件。所有的调度代码都是用Java编写的,我没有使用亚马逊的任何功能来调度它。此应用程序已部署在EC2实例上,它位于弹性负载平衡器后面。根据负载,可以添加其他节点。我的java应用程序也被复制到其他节点,夜间作业在所有实例上执行。 有没有一种方法可以让单个节点执行这项工作? 谢谢你。
我是石英调度器的新手。我有一个批处理文件,它将需要3分钟运行。我需要运行这批每2分钟使用石英调度器。所以我每天安排3个小时。我的问题是我需要检查第一个触发器的状态,如果它不是完整的状态,我需要从这个工作出来。我需要继续我安排的下一个工作。说明:作业53触发器在上午11.30开始,下一个触发器在上午11.32开始,下一个触发器在上午11.34开始,我需要检查上午11.30的触发器状态,如果它不是co
问题内容: 有没有一种方法可以删除带有特定作业的预定触发器?似乎删除触发器的唯一方法是删除整个作业,然后重新注册该作业并触发。 我有一份可能有100多个触发器的作业,我真的不想删除该作业,而只需要删除1个触发器就重新注册所有触发器。 另外,是否有一种方法可以在配置触发器后立即停止调度程序执行作业? 谢谢 问题答案: 尝试 这接受触发器和组名作为参数,并且只会删除指定的触发器,而不是作业。 Quar
我想用quartz scheduler使用jdbc数据存储立即执行作业~。然而,即使我使用now()或调用triggerjob进行调度,在调度和触发器fire之间也有20-30秒的延迟。 我尝试用一个简单的触发器执行作业: 并且我还尝试用调度程序触发: 下面是显示延迟的侦听器日志。