問題タブ [spring-scheduled]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 外部化された値をSpringアノテーションに挿入する
コンパイル時にアノテーション値を評価するJava機能について考えていましたが、アノテーション値の外部化が非常に困難になっているようです。
しかし、それが実際に不可能かどうかはわかりませんので、これについての提案や決定的な答えをいただければ幸いです。
さらに重要なことに、Springでスケジュールされたメソッド呼び出し間の遅延を制御するアノテーション値を外部化しようとしています。例:
それscheduling.properties
がクラスパス上delayValue
にあり、対応するlong値とともにプロパティキーが含まれているとします。
変数に値を割り当てようとしているため、このコードには明らかなコンパイルエラーがありますfinal
が、変数をアノテーション値に割り当てることができないため、これは必須ですstatic final
。
これを回避する方法はありますか?Springのカスタムアノテーションについて考えていましたが、根本的な問題は残っています-外部化された値をアノテーションに割り当てる方法は?
どんなアイデアでも大歓迎です。
編集:小さな更新-この例では、Quartzの統合はやり過ぎです。1分未満の解像度で定期的に実行する必要があります。それだけです。
java - プログラムでSpringを使用してジョブをスケジュールする(fixedRateを動的に設定)
現在私はこれを持っています:
プロパティへの参照を使用するようにこれを変更できます
ただし、アプリを再デプロイせずにスケジュールを変更できるように、プログラムで取得した値を使用する必要があります。最善の方法は何ですか?アノテーションの使用は不可能かもしれないことに気づきました...
spring - 実行時間の長い @Scheduled 春のメソッド、休止状態を機能させるには?
クライアントがジョブを作成できるようにするジャージー Web サービスを作成しようとしています。これらのジョブは、Hibernate を永続化プロバイダーとして使用してデータベースに保存されます。ジョブは、Spring でスケジュールしたいスケジュールされたサービスによってバックグラウンドで実行されます。
次のように、Spring Scheduled メソッドを作成しました。
Job は長時間実行されるため、何らかの方法で job.start() を作成して状態の変化 (QUEUE から IN_PROGRESS へ) をデータベースに報告する必要があります。以前は、コマンドライン実装を使用し、基本begin()
的commit()
にjob.start()
.
次に、Spring を使用して機能させる必要があります...
懸念事項を分離してこれを機能させる方法について何かアドバイスはありますか?
java - @Scheduled Spring アノテーションを使用したメソッドのポイントカット
で注釈が付けられたメソッドの AspectJ ポイントカットが必要です@Scheduled
。さまざまなアプローチを試みましたが、何も機能しませんでした。
1.)
2.)
注釈付きの方法についてaround
/before
アドバイスする他の方法を誰かが提案できますか?@Scheduled
java - Spring Scheduler - 循環依存があると、スケジュールされたメソッドがトランザクションで起動しない
Spring 3、Hibernate、および JPA を使用するアプリケーションに取り組んでいます。次のように2つのクラスがあります。
と
アプリケーション コンテキストの関連部分は次のとおりです。
この構成では、次の例外が発生します
Util クラスから Manager クラスのオートワイヤリングを削除すると、正常に動作します。また、デバッグ中に、アプリケーション コンテキスト ファイルに何らかのエラーがあっても、スケジュールされたメソッドが実行を開始することがわかりました。
いくつかのレガシーな理由から、循環依存を避けることはできません。循環依存の場合にこの例外が発生する理由を誰かが助けることができますか?
java - スケジュールされたジョブの Spring アプリケーション URL
春の定期ジョブ(@Scheduledアノテーション付き)で申請URLを取得することは可能ですか? アプリケーションの特定のページに URL を記載したメールを送信するジョブを作成したいと考えていますhttp://localhost:8080/appName/some/specific/url
。問題はhttp://localhost:8080/
、各環境(ローカル、開発、本番など)で部品が異なることです。
春のスケジューラによって実行されるサーバー側のメソッドでベース URL を取得する簡単な方法はありますか?
java - Spring の @Scheduled cron ジョブは、スケジュールされた時間の数ミリ秒前にトリガーされます
以下の@Scheduled
ように、1 時間ごとに cron 式を使用してSpring をセットアップしました。trend.olap.local.loading.cron.expression
0 0 * * * ?
ここでの目的は、現在の日付と時刻から時間の値を取得し、それをエグゼキューター メソッドに渡すことです。
基本的に、17:00 に時間の値が 16 になるように、現在の時間から 1 を引いています。
しかし、ログを見ると、時間の値は 15 です。これは、スケジューラが 16:59:59,831 頃に実行されたためです。以下の log4j ログを参照してください。cron ジョブがミリ秒単位で四捨五入され、17:00:00,000 の数ミリ秒前にトリガーされているようです。
このため、間違った値を取得しており、ビジネス ケースが失敗しています。
数ミリ秒前ではなく、1 時間ごとに正確に 0 番目のミリ秒で cron を実行するにはどうすればよいですか?
java - Spring の実装 - 繰り返しタイマー
timertask の問題に関するさまざまなスレッドを見てきました。ただし、Spring Scheduler API (3.1) の内部作業について明確にしたいと思います。
10 秒ごとにタイマーを開始する必要があります。アプリケーションは、クラスター化された websphere zos で実行されます。(少なくとも 4 つの jvm ノード)。
こちらが配線。
processDataFeedMetadata メソッドに (@async) を定義しました。
最初に 10 秒ごとに正しく起動するタイマー (4 つの jvm - 1 分ごとに 24 のタイマー発生) が見られる問題は、数時間後に誤動作を開始しました (2 つまたは 3 つの jvm がすべてのタイマーの起動を停止します - 毎回 6 ~ 12 のタイマー発生分)。timertask の実装には独自の制限があることを理解しています。ただし、MethodInvokingTimerTaskFactoryBean から ASYNC メソッドを呼び出すと、(1) タイマーが ASYNC メソッドを呼び出すとすぐに間隔内で完了する必要があるため、timertask が誤動作するのはなぜですか。(2) アプリのログから例外は見られず、MethodInvokingTimerTaskFactoryBean は例外があれば処理して消費する必要があります。
ここで何が起こっているかについて誰かが意見を持っていれば本当に感謝していますか?