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

Spring石英:工作不着火

杨无尘
2023-03-14
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="quartzScheduler"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="autoStartup" value="true"/>
        <property name="schedulerName" value="PCLoaderScheduler"/>
    </bean>

</beans>
@Component
public class PCSchedulerManager {

    @Autowired
    private Scheduler scheduler;

    public void scheduleJob(final Map<String, Object> parameters, Class inputClass) throws PCSchedulerException {

        try {
            long currentTimeStamp = System.currentTimeMillis();

            JobDetail job = JobBuilder
                            .newJob(inputClass)
                            .withIdentity(inputClass.getName() + currentTimeStamp)
                            .build();
            job.getJobDataMap().putAll(parameters);

            Trigger trigger = TriggerBuilder
                                .newTrigger()
                                .withIdentity(inputClass.getName() + currentTimeStamp)
                                .build();

            //Schedule a job with JobDetail and Trigger
            scheduler.scheduleJob(job, trigger);

        } catch (SchedulerException e) {
            throw new PCSchedulerException(e);
        }
    }
}
public class LoaderJob implements Job {

    public void execute(JobExecutionContext jec) throws JobExecutionException {
        System.out.println("Do your stuff here...");
    }

}

另外,如果我使用下面的语句而不是自动调用Spring Quartz调度器,那么作业将成功激发

scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();

请让我知道我做错了什么...

共有1个答案

郎德馨
2023-03-14

是否需要将依赖项注入到作业中?然后实现QuartzJobBean

并重写executeInternal()方法。

另外,请检查作业执行时是否有异常

 类似资料:
  • 我在Maven/war项目中使用了quartz 2.2.1和Spring 3.2.5。 我的WAR文件在Apache-Tomcat-7.x下部署良好,日志表明所有quartz作业都已加载。麻烦就从这里开始。 有人能解释一下发生了什么吗?在我看来,根本不应该有任何遗漏的触发器。 多谢了。

  • 我很难让Grails中的Quartz工作按预期同时运行。这就是我的工作。我已经注释掉了使用Executor插件的代码行,但是当我没有注释掉它们时,我的代码会按预期工作。 就我而言,myService2。doOtherStuff()需要很长时间才能完成,这与下一次触发此作业的时间重叠。我不介意它们是否重叠,这就是我明确添加def concurrent=true的原因,但它不起作用。 我有Quartz

  • 现在我正在考虑一种方法,每个用户将为每个推迟的作业创建一个专用的,如下所示: 我可以在这里看到一个潜在的问题,即使用这种方法,我可以在Quartz Scheduler中快速创建数千个工作。以前我从来没有在Spring Scheduling中用Quartz调度过这么多的工作,不知道系统会如何处理。以这种方式实施系统是一个好主意吗?Spring Scheduling Quartz会不会处理这么多的工作

  • 使用spring 2.5和quartz 1.6.2,我一直试图每分钟触发一个计划任务 我的xml文件是: 我的代码是:

  • 我有一个Sprint Boot-Java8应用程序,它有一个quartz作业,我在启动时配置该作业并设置一个时间表。该作业按照计划自动运行,这与您对quartz作业的期望一样。然而,现在我希望能够允许用户通过点击前端上的一个按钮手动触发这些作业,而不会扰乱该作业的正常调度。这是我所有的相关档案。 但每次运行应用程序并点击控制器的方法时,都会在控制台中出现以下错误: 我到底做错了什么?如何使此作业按

  • 我有一个使用Grails开发的Web应用程序。我正在尝试实现一个后台进程,该进程使用Grails的quutz1.0-RC9插件每5分钟扫描一次DB中的表。 在尝试编写实际逻辑之前,我正在学习如何使用这个插件,因为我是石英的新手。所以我创建了一个作业,每5秒打印一次带有当前时间戳的消息“hai”。 还有我的QuartzConfig。groovy是 当使用命令运行时,这可以正常工作。但是当使用命令创建