当前位置: 首页 > 知识库问答 >
问题:

泉丛环境石英

姬温文
2023-03-14

我使用的是spring 3.1.0的旧版本quartz(2.1.2)。我有一个简单的配置可以防止并行作业执行:

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobFactory">
        <bean class="com.azdne.infrastructure.schedule.ScheduledMethodJobFactory" />
    </property>
    <property name="dataSource" ref="schedulerDataSource" />
    <property name="quartzProperties">
        <props>
            <prop key="org.quartz.scheduler.instanceName">scheduler-cluster</prop>
            <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
            <prop key="org.quartz.jobStore.isClustered">true</prop>
            <prop key="org.quartz.threadPool.threadCount">4</prop>
            <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
            <prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
        </props>
    </property>
</bean>
@Component 
@DisallowConcurrentExecution
public class MyJob{
   @Transactional(timeout=900)
   @Scheduled(cron = "0 0 2 * * ?")
   public void execute() {
   ... implementation goes here
   }
}
NODE 1: task-executor.log.2017-05-16.gz:16/05/2017 02:00:00.068 [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3] INFO  com.package.schedule.job.MyJob.execute - MyJob job - start

NODE 2: task-executor.log.2017-05-16.gz:16/05/2017 02:00:00.103 [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1] INFO  com.package.schedule.job.MyJob.execute - MyJob job - start

这是不寻常的情况。有时作业在两台计算机上启动,有时只在一台计算机上启动。我检查了我的应用程序日志,在数据处理过程中没有发现任何错误。作业开始之间的间隔有时很小--毫秒,有时是几秒。我应该在哪里寻找错误?我是不是在配置上遗漏了什么?

共有1个答案

田翔
2023-03-14

可能是时钟漂移的问题。您需要确保每个节点之间的时钟是同步的。

来源:http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/configjdbcjobstoreclustering.html和https://stackoverflow.com/A/12629332/7321097

 类似资料:
  • 作为几千年中华文明的见证,浩瀚传统文化传承的载体,汉字是让我们每一个中国人引以为豪的东方文明的标志之一。我们的祖先创造汉字,书写汉字,利用汉字和 汉语的无穷魅力创造出让人叹为观止的文学,艺术。而今天进入了计算机时代的我们,虽然不再象古人一样手持毛笔,批著简帛,但我们的生活仍然无时无刻离不开 汉字。 可以毫不夸张的讲,汉字①是世界上最为复杂和庞大的符号系统之一。早在殷商时期,我们的先人就创造出了数目

  • 标准的 Python 发行版不会与 NumPy 模块捆绑在一起。 一个轻量级的替代方法是使用流行的 Python 包安装程序 pip 来安装 NumPy。 pip install numpy 启用 NumPy 的最佳方法是使用特定于您的操作系统的可安装的二进制包。 这些二进制包含完整的 SciPy 技术栈(包括 NumPy,SciPy,matplotlib,IPython,SymPy 以及 Pyt

  • 环境 shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 OS 当前主流的操作系统都支持shell编程,本文档所述的shell编程是指Linux下的shell,讲的基本都是POSIX标准下的功能,所以,也适用于Unix及BSD(如Mac OS)。 Linux Linux默认安装就带了shell解释器。 Mac OS Mac OS不仅带了

  • 你的应用程序可能需要大量的软件包才能正常的工作。如果都不需要 Flask 包的话,你有可能读错了教程。当应用程序运行的时候,你的应用程序的 环境 基本上是所有一切事情的根基。我们是幸运的,因为有许多方式使得我们能够轻松地管理我们的环境。 使用 virtualenv 管理你的环境 virtualenv 是用于在所谓 虚拟环境 中隔离你的应用程序的一个工具。一个虚拟环境是包含了你的应用依赖的软件的一个

  • 在我们开始编写Perl程序之前,让我们了解如何设置Perl环境。 Perl可在各种平台上使用 - Unix(Solaris,Linux,FreeBSD,AIX,HP/UX,SunOS,IRIX等) 赢9x/NT/2000/ WinCE Macintosh(PPC,68K) Solaris(x86,SPARC) OpenVMS Alpha(7.2及更高版本) Symbian Debian GNU/k

  • 要开始使用Koa框架进行开发,您需要安装Node和npm(节点包管理器)。 如果您还没有这些,请转到Node setup以在本地系统上安装节点。 通过在终端中运行以下命令,确认已安装节点和npm。 $ node --version $ npm --version 您应该收到类似于 - 的输出 v5.0.0 3.5.2 请确保您的节点版本高于6.5.0。 现在我们已经设置了Node和npm,让我