如何在不重新启动服务器的情况下动态增加调度程序的数量?

时间:2014-12-15 10:02:32

标签: java spring quartz-scheduler spring-scheduled

我已经通过xml安排了spring quartz作业。我已经配置了10个多个作业

但我的要求是用户可以在属性文件中给出的任何时间点增加调度程序的数量。

如果用户下次更改属性文件,则新调度程序将在不重新启动Web服务器的情况下启动。 这是我的XML ..我有5个调度程序和5个具有不同paremeters的作业。将来我想增加到10,现在我必须添加5个作业和调度程序并在服务器中部署。但是在将来我不想使用属性重新部署应用程序和控件。那么我们怎么能动态地实现这个...请帮帮我

<!-- Event reader job -->
<bean id="eventReader1" class="com.EventReader">
           <property name="taskID" value="0"></property>
    <property name="maxHashSize" value="9"></property>
    <property name="eventType" value="CNSMP"></property>
</bean>

<bean id="eventReader2" class="com.EventReader">
          <property name="taskID" value="1"></property>
    <property name="maxHashSize" value="9"></property>
    <property name="eventType" value="CNSMP"></property>
</bean>

<bean id="eventReader3" class="com.EventReader">
           <property name="taskID" value="2"></property>
    <property name="maxHashSize" value="9"></property>
    <property name="eventType" value="CNSMP"></property>
</bean>

<bean id="eventReader4" class="com.EventReader">

    <property name="taskID" value="3"></property>
    <property name="maxHashSize" value="9"></property>
    <property name="eventType" value="CNSMP"></property>
</bean>

<bean id="eventReader5" class="com.EventReader">

    <property name="taskID" value="4"></property>
    <property name="maxHashSize" value="9"></property>
    <property name="eventType" value="CNSMP"></property>
</bean>


<bean id="eventReaderScheduler1" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <bean id="trigger1" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">

                <bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                    <property name="targetObject" ref="eventReader1" />
                    <property name="targetMethod" value="readEventsAndSendMessages" />
                    <property name="concurrent" value="false" />
                </bean>
            </property>
            <property name="repeatCount" value="${eventReaderScheduler.repeatCount}" />
            <property name="repeatInterval" value="${eventReaderScheduler.repeatInterval}"></property>
        </bean>
    </property>
    <property name="autoStartup" value="${eventReaderScheduler.autoStartup}" />
</bean>

<bean id="eventReaderScheduler2" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <bean id="trigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">

                <bean id="jobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                    <property name="targetObject" ref="eventReader2" />
                    <property name="targetMethod" value="readEventsAndSendMessages" />
                    <property name="concurrent" value="false" />
                </bean>
            </property>
            <property name="repeatCount" value="${eventReaderScheduler.repeatCount}" />
            <property name="repeatInterval" value="${eventReaderScheduler.repeatInterval}"></property>
        </bean>            
    </property>
    <property name="autoStartup" value="${eventReaderScheduler.autoStartup}" />
</bean>

<bean id="eventReaderScheduler3" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <bean id="trigger3" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">

                <bean id="jobDetail3" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                    <property name="targetObject" ref="eventReader3" />
                    <property name="targetMethod" value="readEventsAndSendMessages" />
                    <property name="concurrent" value="false" />
                </bean>
            </property>
            <property name="repeatCount" value="${eventReaderScheduler.repeatCount}" />
            <property name="repeatInterval" value="${eventReaderScheduler.repeatInterval}"></property>
        </bean>

    </property>
    <property name="autoStartup" value="${eventReaderScheduler.autoStartup}" />
</bean>

<bean id="eventReaderScheduler4" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <bean id="trigger4" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">

                <bean id="jobDetail4" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                    <property name="targetObject" ref="eventReader4" />
                    <property name="targetMethod" value="readEventsAndSendMessages" />
                    <property name="concurrent" value="false" />
                </bean>
            </property>
            <property name="repeatCount" value="${eventReaderScheduler.repeatCount}" />
            <property name="repeatInterval" value="${eventReaderScheduler.repeatInterval}"></property>
        </bean>

    </property>
    <property name="autoStartup" value="${eventReaderScheduler.autoStartup}" />
</bean>


<bean id="eventReaderScheduler5" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <bean id="trigger5" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">

                <bean id="jobDetail5" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                    <property name="targetObject" ref="eventReader5" />
                    <property name="targetMethod" value="readEventsAndSendMessages" />
                    <property name="concurrent" value="false" />
                </bean>
            </property>
            <property name="repeatCount" value="${eventReaderScheduler.repeatCount}" />
            <property name="repeatInterval" value="${eventReaderScheduler.repeatInterval}"></property>
        </bean>

    </property>
    <property name="autoStartup" value="${eventReaderScheduler.autoStartup}" />
</bean>

0 个答案:

没有答案