ホームページ > Java > &#&チュートリアル > 春に動的に調整可能な固定レートでジョブをスケジュールするにはどうすればよいですか?

春に動的に調整可能な固定レートでジョブをスケジュールするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-27 15:27:11
オリジナル
1015 人が閲覧しました

How Can I Schedule Jobs with Dynamically Adjustable Fixed Rates in Spring?

Spring を使用したカスタム固定レートでのジョブのスケジュール

Spring では、アノテーションを使用してジョブをスケジュールする便利な方法が提供されます。ただし、固定レートを動的に設定する必要がある場合があります。この記事では、Spring のトリガー メカニズムを使用したソリューションを紹介します。

現在のアノテーション ベースのアプローチ

デフォルトでは、fixedRate で @Scheduled を使用して実行間の期間を指定できます。ただし、このレートは静的であり、アプリケーションを再デプロイしない限り変更できません。

解決策: トリガーの使用

注釈に依存する代わりに、カスタム トリガーを構成できます。動的に計算された値に基づいて次回の実行時間を計算します。これを実現する方法は次のとおりです。

1.スケジューリング構成を実装する

SchedulingConfigurer インターフェイスに従う構成クラスを作成します。このクラスは、デフォルトのスケジューラをオーバーライドし、カスタム トリガーを登録します。

@Configuration
@EnableScheduling
public class MyAppConfig implements SchedulingConfigurer {
    // ...
}
ログイン後にコピー

2.トリガーを定義する

次回の実行時間を返すトリガーを実装します。この例では、環境に保存されている myRate プロパティに基づいて次回を計算します。

@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
    Calendar nextExecutionTime = new GregorianCalendar();
    Date lastActualExecutionTime = triggerContext.lastActualExecutionTime();
    nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date());
    nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); //you can get the value from wherever you want
    return nextExecutionTime.getTime();
}
ログイン後にコピー

3.トリガーの登録

スケジューリング構成クラスで、タスクのトリガーを登録します。

public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    // ...
    taskRegistrar.addTriggerTask(
        new Runnable() {
            @Override
            public void run() {
                myBean().getSchedule();
            }
        },
        new Trigger() {
            // ... (Your trigger implementation)
        }
    );
}
ログイン後にコピー

このアプローチを使用すると、スケジュールされたジョブの固定レートを動的に設定できます。を使用すると、アプリケーションを再デプロイせずに調整できます。

以上が春に動的に調整可能な固定レートでジョブをスケジュールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート