Spring Task Executor Запланировано слишком много экземпляров задачи - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть простые Spring Scheduled Taks, определенные следующим образом:

<context:component-scan base-package="com/test"/>
<task:scheduled-tasks>
    <task:scheduled ref="myScheduler" method="doMyTask" fixed-rate="300000"/>
</task:scheduled-tasks>

<task:scheduler id="taskScheduler" pool-size="1"/>

<task:executor id="executorWithPoolSizeRange"
               pool-size="1"
               queue-capacity="100"/>

<bean id="cleanupClass" class="com.test.CleanupClass">
   <property name="myProperty" value="3600"/>
</bean>

Я бы хотел запускать один поток синхронно каждые 5 минут. Тем не менее, я получаю ПЯТЬ экземпляров задачи, выполняемой последовательно каждые 5 минут. Кто-нибудь знает, если чего-то не хватает в описании XML выше?

Я получил желаемое поведение, используя аннотации @Scheduled, но я бы предпочел не использовать аннотации для фиксированной скорости, поскольку я хочу, чтобы она настраивалась вне кода.

Спасибо.

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

у меня сработало следующее:

  <bean id="task" class="com.foo.MyTask">
  <task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="task" method="run" fixed-delay="300000" />
  </task:scheduled-tasks>
  <task:scheduler id="scheduler" pool-size="10" />

Привет, Марк

0 голосов
/ 03 сентября 2011

Другая идея - использовать выражение SPEL из файла свойств, чтобы использовать его с аннотацией @Sched. Таким образом, он все еще настраивается при использовании этой аннотации.

0 голосов
/ 03 сентября 2011

Такое поведение вы наблюдаете в STS при развертывании его на tomcat?Если это так, вы можете удалить приложение, повторно развернуть его и перезапустить приложение.

...