6

最初の 3 つのトリガーと 1 つのトリガーを持つ 2 つのクォーツ スケジューラを使用して Spring アプリケーションを作成しました。

これらのトリガーはすべて、同時操作 false に設定されています。

これを実行すると、2 番目のスケジューラーのジョブのトリガーのみが起動されるようです。triggerJobB も実行にほとんど時間がかかりません。

私の質問は、1 つのスプリング コンテキストで 2 つのスケジューラを使用すると実行上の問題が発生するかどうか、およびそれが適切な方法であるかどうかです。

<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>
4

1 に答える 1

5

各スケジューラの名前を設定する必要があります。そうしないと、Spring は最初のスケジューラを 2 番目のスケジューラで上書きします。

 <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>

この理由は次のとおりです。

「ジョブ実行者」は、実際には SchedulerFactoryBean ではありません。これは、SchedulerFactoryBean によって提供される Scheduler Bean です (正確には、その start メソッドを呼び出すと、Trigger を起動する集約された QuartzScheduler.start メソッドが呼び出されます)。実際のところ、このスケジューラは、SchedulerRepository シングルトン (SchedulerRepository.getInstance()) の schedulerName (明示的に設定されていない場合、構成されたすべての SchedulerFactoryBean に対して同じデフォルト値を持つ) の下に格納 (およびルックアップ) されます。

これが、SchedulerFactoryBean-s に異なる schedulerName を設定しない限り、SchedulerFactoryBean-s ごとに常に同じスケジューラーを取得する方法です。

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

于 2012-12-21T11:10:02.483 に答える