2016-10-27 6 views
0

オブジェクトのために達しているかどうかを確認...しかし、私はあなたのいくつかは、これをアプローチする方法を知りたい春ブーツは - ...目標期日は、それが本当の問題だかどうかはわからない

私はSpring Bootアプリケーションを持っています。 次にInterruttore.classを持っています。これはとりわけ、このフィールドは日付であるtimeoutDateです。

アプリでは、このクラスのさまざまなインスタンスが使用されます。 timeoutDateフィールドは、単一のオブジェクトごとに、さまざまな要因によって更新できます。実際の日付がtimeutDateにいつ到達するかを知る必要があります。

私は@Scheduledというタスクを作成していましたが、遅延が短すぎるし、好きではありません。どうすればいいですか?

私は @Scheduledタスクを作成していた非常に単純な(かつ最適化されていない)ようにして

答えて

1

が、遅延が短すぎるだろうと私は、 私はどのように行うことができますが、それを好きではないのですか?

なぜ短すぎますか? 希望する遅延を使用することができます。

@Scheduled(fixedDelay=50000) // 50 secs 
@Scheduled(fixedDelay=1000) // 1 secs 
0

あなたはクォーツまたはJesque(Redisの)を使用することができます。どのタスクを実行する必要があっても、その時点でそのタスクをスケジュールすることができます。

この時刻の値をいつでも更新できる場合は、(タスク識別子またはキーを使用して)以前にスケジュールされたタスクをキャンセル(スケジュール解除)し、更新された時刻を変更することができます。あなたは選択肢がたくさんあるhttp://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

:SpringのさまざまなタスクスケジューリングAPIのドキュメントを

0

ルック。私はあなたが持っている可能性があります "最適化されていない"アイデアは、期限切れのものを見つけるためにあなたの豆を検索する繰り返しタスクをスケジュールすることだと思う。それは実際に大量の豆には効率的ではありません。

timeoutDateを持つBeanごとにスケジュールされたタスクを作成し、そのBeanと同時に作成し、timeoutdateが更新されたら(Spring AOPがこれを助けることができます)。

また、豆のリストをタイムアウトの日付順に並べ替えることもできます。最も早い期限切れの時間にタスクをスケジュールする。それは、その豆と時間が経過している他の誰かを刈り取り、次の期限切れの時に新しい仕事を予定します。

あなたがこれを行う場合は、あなたがいることを確認する必要があります。 - それは(それ以前の現在スケジュールカルよりもおそらく有効期限付き)のリストに追加された新しいオブジェクトを処理 - それは、オブジェクトが削除された場合の処理タイムアウト以外の理由で

(これらの事柄のいずれも起こり得ない限り、それは心配しないでください)

関連する問題