2

@Scheduledこのアノテーションを使用してmyProcess()、Spring MVC アプリケーション (Apache Tomcat/7.0.26 で実行されるバージョン 3.0.6.RELEASE) の関数を1 時間ごとに実行します(3,600,000 ミリ秒 = 1 時間)。

@Scheduled(fixedRate = 3600000)
public void myProcess() { ... }

関数は期待どおりに実行されますが、午前中は実行されません(直近 2 日間のサンプル ログの時刻を参照してください)。これは毎日起こります。ログ ファイルに例外はありません。この奇妙な動作の理由について何か考えはありますか?


Feb 13 02:11:15
Feb 13 03:11:16 
Feb 13 06:17:34
Feb 13 06:45:55 
Feb 13 07:03:22
Feb 13 07:31:57
Feb 13 08:11:16 
Feb 13 09:11:18
Feb 13 10:11:18 
Feb 13 11:11:28 

Feb 14 01:11:37
Feb 14 02:11:29
Feb 14 03:11:29 
Feb 14 06:19:51
Feb 14 06:49:17
Feb 14 07:35:57
Feb 14 08:11:29
Feb 14 09:11:35
4

2 に答える 2

2

特定の質問に答えることはできません。この領域で大幅な変更が実装されていることがわかっている限り、3.0から3.1の間で、Springの最新バージョン(3.2)を使用してみます。

ただし、私の経験では、すべての場合でcronTriggerの方がはるかに優れていることがわかりました(もちろん、fixedRateが実行できるすべてのことを実行できます)。

次のようにプロパティを定義するだけです。

<util:properties id="props" location=classpath:/application.properties" />
<context:property-placeholder properties-ref="props"  />
<task:annotation-driven />

そしてそれを使用します:

@Scheduled(cron = "${cron.expression}")
public void scheduledTask() throws .. { .. }

application.propertiesのどこに次のようなものがありますか:cron.expression = 0 0/60 * * *?

于 2013-02-15T08:43:03.853 に答える
2

私は同じ種類の問題を抱えていましたが、cron属性を使用しています:

// every day at midnight
@Scheduled(cron = "0 0 0 * * ?")
public void myProcess() {
}

どんな行動だったかはよく覚えていませんが、思ったほどではありませんでした。おそらくSpring 3.0.xのバグに依存している可能性があることが最終的にわかりました。私が試した(そしてうまくいった)解決策は、注釈に加えて、 applicationContext.xmlファイルでタスクを宣言することでした:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    ...

    <!-- scheduling and async -->
    <task:annotation-driven />
    <task:scheduled-tasks>
      <task:scheduled ref="myProcessHandler" method="myProcess" fixed-delay="0" />
    </task:scheduled-tasks>
    <bean id="myProcessHandler" class="path.to.MyProcessHandler" />

    ...

</beans>

バグを修正するために属性が必要な場合でもfixed-delay(私の知る限り)、それは考慮されませんが、注釈のcron属性は考慮されます。@Scheduled

これが役立つことを願っています。

于 2013-02-15T08:49:41.840 に答える