gpt4 book ai didi

spring - 在一个 Spring 上下文中使用两个调度程序

转载 作者:行者123 更新时间:2023-12-04 19:12:04 25 4
gpt4 key购买 nike

我创建了一个带有两个 quartz 调度程序的 Spring 应用程序,第一个有 3 个触发器,第二个有一个触发器。

所有这些触发器都设置为并发操作 false。

当我运行它时,似乎只有第二个调度程序中的作业触发器才能获得
被解雇了。 triggerJobB 的执行时间也很少。

我的问题是,在一个 spring 上下文中使用两个调度程序是否会导致执行问题,以及这是否是一种好的做法。

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerJobA" />
<ref bean="triggerJobC" />
<ref bean="triggerJobD" />
</list>
</property>
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerJobB" />
</list>
</property>
</bean>

最佳答案

您需要为每个调度程序设置名称,否则 spring 只会用第二个调度程序覆盖第一个调度程序。

 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="schedulerName" value="SchedulerOne"/>
<property name="triggers">
<list>
<ref bean="triggerJobA" />
<ref bean="triggerJobC" />
<ref bean="triggerJobD" />
</list>
</property>
</bean>


<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="schedulerName" value="SchedulerTwo"/>
<property name="triggers">
<list>
<ref bean="triggerJobB" />
</list>
</property>
</bean>

这样做的原因是:

The "job executor" is actually not the SchedulerFactoryBean. It is the Scheduler bean(to be precise calling its start method invokes the aggregated QuartzScheduler.start method which fires the Trigger-s), provided by the SchedulerFactoryBean. As a matter of fact this Scheduler is stored(and looked-up) under the schedulerName(which if not explicitly set has the same default value for every configured SchedulerFactoryBean) in the SchedulerRepository singleton(SchedulerRepository.getInstance()).

That's how unless you set a different schedulerName for your SchedulerFactoryBean-s, you will always get the same scheduler by each and every SchedulerFactoryBean-s



http://forum.springsource.org/showthread.php?40945-Multiple-Quartz-SchedulerFactoryBean-instances

关于spring - 在一个 Spring 上下文中使用两个调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13985797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com