a-s*_*sak 6 java spring scheduling quartz-scheduler
在我的应用程序中,需要能够根据进入的请求类型(动态)创建计划作业.
我还可以使用Spring来创建和触发Jobs吗?如果是,怎么样?
任何帮助都会有用.
ska*_*man 12
鉴于SchedulerFactoryBean公开了原生Quartz Scheduler对象,您可以将其直接连接到您的控制器类,然后使用Scheduler对象动态创建和注册触发器和作业.
Spring本身不能用于动态创建的作业的调度,因为Spring的bean支持将用于静态配置的作业,但原生的Quartz Scheduler API足够合理,可以单独使用(几乎没有).作为工作的触发器,那是Quartz的工作,而不是Spring的工作.
编辑:要么我错误理解原始问题,要么其他人都是.另一个回答所有细节如何使用Spring静态连接一系列石英作业,但问题是如何在请求进入时动态调度作业.
看看CronTriggerBean和JobDetailBean。下面模拟的“MyJob”类是QuartzJobBean的一个实例。cron 表达式正是您所期望的,但以秒为第一个值。
<beans>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="startupDelay" value="5"/>
<property name="waitForJobsToCompleteOnShutdown" value="false"/>
<property name="triggers">
<list>
<bean class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<bean class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="edu.vt.MyJob"/>
<property name="jobDataAsMap">
<map>
<entry key="messageSource" value-ref="messageSource"/>
<entry>
<key><value>anotherProperty</value></key>
<bean class="edu.vt.MyUsefulBean">
<constructor-arg index="0" value="..."/>
</bean>
</entry>
</map>
</property>
</bean>
</property>
<property name="cronExpression" value="0 * * * * ?"/>
</bean>
</list>
</property>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20300 次 |
最近记录: |