4

私は現在、JDBC ジョブ ストアを使用して負荷分散された環境で Quartz をセットアップする過程にあり、誰もが Quartz ジョブ ストア DB をどのように管理しているのか疑問に思っています。

私にとって、Quartz (2.2.0) はバージョン管理されたアプリケーションの一部としてデプロイされ、一度に 1 つのサーバーに複数のバージョンが存在する可能性があります。XXScheduler_v1 という表記を使用して、複数のスケジューラーがうまく連携できるようにしています。私のコードは正常に動作しており、Quartz テーブルには必要に応じてトリガー/ジョブ/その他が取り込まれています。

私が気づいたことの 1 つは、アプリケーションがアンデプロイされたときに発生するデータベースのクリーンアップがないように見えることです。つまり、アクティブなスケジューラーがなくなったにもかかわらず、ジョブ/スケジューラーのデータが Quartz データベースに残っているように見えるということです。

これは理想的とは言えず、私のモデルでは、時間の経過とともにデータベースが必要以上に大きくなると想像できます。いくつかのクリーンアップ プロセスを接続する方法がありませんか? または、クォーツはデータベースのクリーンアップを手動で行うことを期待していますか?

乾杯!

4

4 に答える 4

0

あなたは何も見逃していません。

ただし、これらのクォーツ テーブルは、データ モデルで使用するアプリケーション DB オブジェクトと変わりません。テーブルを追加するEmployeesと、それ以降のバージョンでは不要になります。古いテーブルを削除する責任は誰にありますか? あなただけ。あなたがDBAを持っているなら、あなたはDBAでそれを転がすかもしれません;)。

この種のメンテナンスは通常、アンインストール スクリプト/ウィザード、アップグレード スクリプト/ウィザードを使用して、または新しいバージョンでのアプリケーションの最初の起動時に行われます。


余談ですが、通常、異なるアプリケーションは異なるデータベースを使用するか、少なくとも異なるスキーマを使用するため、相互依存関係が減少します。

于 2013-07-17T21:55:49.113 に答える
0

Quartz Scheduler の内部データを消去するには、さらに SQL が必要です。

delete from QRTZ_CRON_TRIGGERS;
delete from QRTZ_SIMPLE_TRIGGERS;
delete from QRTZ_TRIGGERS;
delete from QRTZ_JOB_DETAILS;
delete from QRTZ_FIRED_TRIGGERS;
delete from QRTZ_LOCKS;
delete from QRTZ_SCHEDULER_STATE;
于 2020-01-27T14:57:59.237 に答える
0

アプリケーションをアンデプロイするとき、またはスケジューラをシャットダウンするときに、DB のクリーンアップを行っていないことは間違いありません。アプリケーションのシャットダウン中にいくつかのクリーンアップ コードを作成する必要があります (つまり、destroy() イベント ライフサイクルでクリーンアップを実行するある種の StartupServlet またはコンテキスト リスナーを作成します)。

于 2013-07-17T21:37:32.710 に答える