[解決済み] Springでジョブをプログラム的にスケジューリングする(fixedRateを動的に設定する)
2023-05-12 02:26:29
質問
現在、私はこのような状態です。
@Scheduled(fixedRate=5000)
public void getSchedule(){
System.out.println("in scheduled job");
}
これをプロパティへの参照を使うように変更すると
@Scheduled(fixedRateString="${myRate}")
public void getSchedule(){
System.out.println("in scheduled job");
}
しかし、私はアプリを再デプロイすることなくスケジュールを変更できるように、プログラムで取得した値を使用する必要があります。最良の方法は何でしょうか?アノテーションを使うのは無理かもしれませんが...。
どのように解決するのですか?
を使用して
Trigger
を使うと、次の実行時間をその場で計算することができます。
このようなものがトリックを行うはずです。
の Javadoc を参考にしました。
@EnableScheduling
):
@Configuration
@EnableScheduling
public class MyAppConfig implements SchedulingConfigurer {
@Autowired
Environment env;
@Bean
public MyBean myBean() {
return new MyBean();
}
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(100);
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
taskRegistrar.addTriggerTask(
new Runnable() {
@Override public void run() {
myBean().getSchedule();
}
},
new Trigger() {
@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();
}
}
);
}
}
関連
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
[解決済み] ImageViewの幅と高さをプログラムで設定する?
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] スケジュールされたジョブを設定する?
-
[解決済み] Spring RestTemplateのパラメータ付きGET
-
[解決済み】AndroidのボタンにdrawableLeftをプログラム的に設定するには?
-
[解決済み] Springの@Valueにnullをデフォルト値として設定することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
プロジェクトの依存関係を解決できない。
-
Jsoup-Crawlingの動作
-
-bash: java: コマンドが見つからない 解決方法
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
eclipse にリソースリーク:'in' が閉じない
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
テストが空であるかどうかを判断するためのオプションの処理