Можем ли мы создать пул Spring ScheduledExecutorTask? - PullRequest
2 голосов
/ 13 января 2011

Я пытаюсь увидеть, есть ли возможность создать пул весны ScheduledExecutor.То, что мне нужно, это набор задач ScheduledExecutor, которые будут выполнять определенные задачи через регулярные промежутки времени.Я пытался использовать следующий способ:

<bean id="contentProcessorPool"
    class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">
<property name="poolSize" value="${processor.corepoolsize}"/>
<property name="continueScheduledExecutionAfterException" value="true"/>
<property name="scheduledExecutorTasks">
  <list>
    <ref local="processor"/>
  </list>
</property>

<bean id="processor"
    class="org.springframework.scheduling.concurrent.ScheduledExecutorTask">
<property name="delay" value="${processor.polling.delay}"/>
<property name="period" value="${processor.polling.period}"/>

<property name="runnable">
  <ref local="contentWorker" />
</property>

 <bean id="contentWorker" class="com.autodesk.contentextraction.processor.ContentWorker">
</bean>

Но это создает один экземпляр ContentWorker, который продолжает работать с указанныминтервал.Я хочу, чтобы набор ContentWorker запускался через заданный интервал.

Любые указатели будут высоко оценены.

Спасибо

Ответы [ 2 ]

3 голосов
/ 13 января 2011

Как насчет этого?

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="someObject" method="someMethod" fixed-delay="5000"/>
</task:scheduled-tasks>

<task:scheduler id="myScheduler" pool-size="10"/>

Источник: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html#scheduling-task-namespace-scheduled-tasks

1 голос
/ 14 мая 2012

Если вы использовали фиксированную скорость вместо фиксированную задержку , операция будет выполняться именно в этом интервале, а не после завершения следующего. Я бы не подумал, что вам понадобится объединить его (вручную) после этого?

Если вам не нужен явный контроль в вашем контекстном файле, вы можете аннотировать класс:

import org.springframework.stereotype.Service
org.springframework.scheduling.annotation.Scheduled

Class annotation: @Service 
Method annotation: @Scheduled(fixedRate=30000)

Контекст:

xmlns:task="http://www.springframework.org/schema/task"

http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd

<task:annotation-driven />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...