2012-01-02 15 views
2

をMySQLのテーブルを監視し、いくつかのものを実行するためには、それがQuartz.NETを使用して次のことを実現することが可能です:使用Quartz.NET

私は、フィールド「StreamAt」と「VODContent」という名前のMySQLのテーブルがある - 日時を - です"StreamAt"日時の値の5分前または後にこのテーブルを監視することができますが、いくつかのプロセス(コード)が実行されますか?詳細についてはavaialable

i'am

答えて

0

私が感じたことは、あなたが尋ねたことを行うことで、Quartzを最大限に活用しているということです。

あなたがしたいことを達成するための簡単な方法は、VODContentにエントリを作成するたびにStreamAt + 5分にスケジュールされたトリガーを作成することです。これは、VODContentのエントリを追加するプロセスで、適用コードのレベルで実行する必要があります。

作成するトリガーには名前とグループが必要です(後で取得できるように)。あなたの場合、私はその名前があなたのVODContentラインのIDであると信じています。ここでは、あなたは、このようなトリガを作成する方法である:

var simpleTrigger = new SimpleTrigger("yourVODContentId", "VODContentStreamAt", startTime); 

その後、いくつかの点で、あなたのトリガの実行を中止する場合(ユーザーが自分の注文をキャンセルするので、あなたがVODContent内のエントリを削除する例えばとしましょう) 、あなたはあなたのトリガーを除去するために、スケジューラにUnscheduleJobを呼び出すことができます。

_scheduler.UnscheduleJob("yourVODContentId", "VODContentStreamAt"); 

最後の一つ重要なことは、あなたのQuartz.NETインスタンスがAdoJobStore、およびないRAMJobStoreに構成しなければならないということです。これにより、トリガーがデータベースに格納され、スケジューラーが停止/再開されても、スケジュールされたトリガーが失われることはありません。

基本的には、をQuartzにプッシュするようにしてください。アプリケーションからQuartzをプルするのではなく、

+0

多くのおかげでsonyc – user852194

+0

こんにちは、私は質問を掲示することから禁止されていた、あなたは私がこの赤い、pleasssssssse – user852194

3

確かに事前に

おかげで、必要な場合は、これが可能である: VODContentをポーリングする1 Quartz.Netジョブの作成(other ways then polling for other DBMSが、これがありますmysqlconnectorは私が知る限りイベント通知を特徴としないので、mysqlのために働く単純な解決策です)。このようなジョブを作成するには、Quartz.NetのIJob interfacedescribed hereとして実装する必要があります。プログラムでは、n秒/分ごとに実行するようにスケジューリングする必要があります。

mysql connectorでmysqlデータベースへの接続、読み込み、書き込みの方法を示す短いチュートリアルbe found here

特定のジョブを既に開始しているかどうかを調べる方法VODContentが依存しています。たとえば、特定の行を変更して、特定のジョブのスケジューリング時に更新される新しいbool値 "Processed"を導入することができます。その後、まだ処理されていない値についてのみクエリを実行する必要があります。

Quartz.Netでstatefullとステートレスのジョブに関する部分を読んで、違いを理解してください。

上記で作成したジョブは、テーブル内の変更をチェックし、チュートリアルで説明したsimple trigger命令を使用して、ルールに従って新しいジョブをスケジュールします。

+0

多くのお礼をいただきありがとうございます。まず、ドキュメントを見てから、リトルビットコードの実装を開始します。一度やり直してしまえば – user852194

+0

こんにちはトプセン、サンプルをいくつか作っていますが、大丈夫ですが、欠けている部分は、テーブルの要素があれこれ(C#で)準備ができているかどうかをチェックするコードを書いていません。私はQuartsに何とかそれをして欲しいと思っています。私はあなたにundestandを望みます。 – user852194

+0

私は答えを編集し、mysqlチュートリアルとコネクタへのリンクを追加しました。それを試して、あなたが立ち往生する場合に備えて動作しないコードを投稿してください。 – tobsen

関連する問題