使用Quartz调度程序运行后台任务

我们目前使用org.springframework.scheduling.quartz.SchedulerFactoryBean和org.springframework.scheduling.quartz.CronTriggerBean来实现特定cronExpressions的作业调度,现在我们有一个要求来触发后台进程的某些动作,即类似于JMS。

我正在寻找使用石英调度程序的选项,并且可以将任务作为SchedulerFactoryBean中的作业添加(无需指定cronexpression)并从Java类调用它? 探索此选项需要帮助。 提前致谢

谢谢回复。 我确实尝试过这个选项
这是spring xml配置

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
<property name="triggers"> 
<list> 
    <ref bean="TEST_SCHEDULER" /> 
</list>
</property>
<property name="autoStartup"><value>true</value></property>
</bean> 

<bean id="TEST_SCHEDULER" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="IN_TEST_SCHEDULER" />
    <property name="cronExpression"><value>"00 00 00 ? * MON-FRI"</value></property>
</bean>
<bean name="IN_TEST_SCHEDULER" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.TestScheduler" />
    <property name="jobDataAsMap">
        <map>
            <entry key="timeout" value="20" />
        </map>
    </property>
</bean>

从java类调用这些语句

SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
Scheduler scheduler = schedulerFactory.getScheduler(); //scheduler is null here .. 
scheduler.triggerJob(jobName, jobGroup);

调度程序为空,因此无法触发作业。


org.springframework.scheduling.quartz.SchedulerFactoryBean bean注入到您的类中。 调用此bean上的getScheduler()方法以检索调度程序实例。 使用调度程序添加额外的触发器(简单,cron等)为您的期望的工作。


在探索了几个网站并发布后,得到了解决方案,以防万一像我这样的人在未来寻找它:)

WebApplicationContext springCtx = WebApplicationContextUtils
                .getWebApplicationContext(getServletContext());
        scheduler = (Scheduler) springCtx.getBean("scheduler");
scheduler.triggerJob("IN_TEST_SCHEDULER", "DEFAULT");

这触发了所需的工作

链接地址: http://www.djcxy.com/p/23629.html

上一篇: run backgroud task using Quartz scheduler

下一篇: Quartz scheduler interrupting job?