簡體   English   中英

如何在Spring MVC中設置優先級石英觸發器

[英]How do I set priorities quartz triggers in Spring MVC

我將Quartz調度程序與cron表達式一起使用,以執行在Java Spring MVC應用程序中定期執行的一些任務。 在我的root-context.xml文件中,我具有以下內容:

<!--Quartz Scheduler Beans   -->

    <bean id="emailNotificationJob" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

    <property name="targetObject" ref="eventsService" />
    <property name="targetMethod" value="sendEventEmailNotification" />
    <property name="concurrent" value="false" />    <!-- this is the property to prevent concurrent execution -->
    </bean>

    <bean id="deleteWebContentsJob" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

    <property name="targetObject" ref="webContentDefinitionService" />
    <property name="targetMethod" value="deleteWebContents" />
    <property name="concurrent" value="false" />    
    </bean>


    <bean id="saveStaticContentsJob" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

    <property name="targetObject" ref="webContentDefinitionService" />
    <property name="targetMethod" value="saveStaticContents" />
    <property name="concurrent" value="false" />    
    </bean>

    <bean id="emailTrigger" 
                class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

    <property name="jobDetail" ref="emailNotificationJob" />
    <property name="cronExpression" value="0 0/1 * 1/1 * ? *" />

    </bean> 

    <bean id="deleteWebContentsTrigger" 
                class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

    <property name="jobDetail" ref="deleteWebContentsJob"/>
    <property name="cronExpression" value="0 1 0 1/1 * ? *" />

    </bean>


    <bean id="staticContentsUploadTrigger" 
                class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

    <property name="jobDetail" ref="saveStaticContentsJob" />
    <property name="cronExpression" value="0 0/1 * 1/1 * ? *" />

    </bean> 

    <!-- Scheduler factory bean to glue together jobDetails and triggers to Configure Quartz Scheduler -->
    <bean  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
            <list>
                <ref bean="emailNotificationJob" />
                <ref bean="deleteWebContentsJob" />
                <ref bean="saveStaticContentsJob" />
            </list>
        </property>

        <property name="triggers">
            <list>
                <ref bean="emailTrigger" />
                <ref bean="deleteWebContentsTrigger" />
                 <ref bean="staticContentsUploadTrigger" />
            </list>
        </property>
    </bean>

    <!-- Quartz Bean End -->

我在應用程序中使用Quartz Scheduler 2.2.1

我想為各種觸發器設置優先級。 在這里,我有兩個觸發器設置為在相同的時間間隔觸發。 我試圖將其中一個設置為優先級1,將另一個設置為優先級2。有沒有辦法做到這一點。

CronTriggerFactoryBean具有一個稱為priority的屬性(spring-context-support:4.2.4.RELEASE)。 這又用於設置CronTriggerImpl的優先級,該優先級具有一個Javadoc指出:

觸發器的優先級充當平局決勝者,因此,如果兩個觸發器具有相同的計划啟動時間,則Quartz將盡力為優先級較高的線程提供對工作線程的優先訪問權。

如果未明確設置,則默認值為5。

再說一次,如果線程池中有足夠的線程供兩個進程使用,我不確定優先級是否會起作用(取決於優先級是否也分配給了實際的工作線程)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM