![](/img/trans.png)
[英]How can I dynamically create Triggers in Spring Boot using Quartz?
[英]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.