2017-06-19 2 views
0

プロジェクトでWebLogic 12 にdeploed春のプロジェクトがありスケジューラ用春のスケジューラはdidntの仕事を適切

@Component 
public class ExampleScheduler { 

    @Autowired 
    ExampleService exampleService; 

    @Scheduled(fixedDelay = 1000) 
    private void run(){ 
     exampleService.doSomething(); 
    }  
} 

セッティングのようないくつかの春のスケジューラがあります@Configuration。

問題はFIXEDDELAYが正しく2回動作し、その後、1.5分のようになって反復間で一時停止していることです。 私はfixedRateまたはcronをScheduledアノテーションで試しましたが、役に立たなかった。スケジュールされたタスクで

方法は、プロジェクトに十分なメモリが、100msのように動作しますが、スケジューラは遅い動作します。次のタスクのためのタイマーが前回の終了後に開始されるよう

+0

。また、WebLogic上にあるので、自分で作成するのではなく、管理されたスレッドプールを使用しているはずです。 –

答えて

0

FIXEDDELAY引数が設計されています。つまり、タスクを実行するのに0.5秒かかる場合は、効果的にev0ery 1.5秒を繰り返します。

P.S.したがって、fixedDelayは複数のプロセスが競合し競合状態を引き起こすのを避けるのが最善です。たとえば、一部の値を更新するスケジュールされたタスクがあり、このプロセスには0.1秒から5秒までの時間がかかりますが、毎秒更新する必要があります。 fixedDelayを使用すると、複数のスレッドが同じタスクを完了しようとするのを避け、古いデータを最後に使用しているタスクが最後に完了すると、新しいタスクから正しい値が消去される可能性があります。各プロセスの開始から

fixedRate対策。あなたはそれをすべての0.5秒を必要とするので、それが唯一の第二に指定することができますので、cronのが最適な選択ではないだろうが、あなたがそれを必要に応じて次のようになり

@Scheduled(fixedRate=500) 

:そして、このまっすぐ進むだろう、6つの入力スポットやゾーンの任意のものを持つ:<:スケジューラ/タスク> `や` EnableScheduling` @あなたは両方を持つべきではありませんあなたは `でXMLを使用するか

@Scheduled(zone = "EST", cron = "* * * * * *") 

For the spring document link.

関連する問題