Quartz.NETの基礎知識の概要

6587 ワード

Quartz.NETって何?


私が今使っているQuartzのためです.NET2.2バージョン、相対2.xの変化は大きくなく、主に1に対してである.xは多くのものを更新して、以下の基礎知識はネットを抜粋します.Quartz.NETはオープンソースのジョブスケジューリングフレームワークであり、OpenSymphonyのQuartz APIである.NET移植は、winformとaspに使用できるC#で書かれています.Netアプリケーションで.シンプルさを犠牲にすることなく、柔軟性を提供します.ジョブを実行するために簡単なスケジュールまたは複雑なスケジュールを作成することができます.データベースサポート、クラスタ、プラグイン、cron-like式のサポートなど、多くの特徴があります.Quartz.NETフレームワークのコアはスケジューラです.スケジューラはQuartzを管理する.NETアプリケーションランタイム環境.Quartzはスレッドやスレッド管理だけではありません.伸縮性を確保するため、Quartz.NETはマルチスレッドベースのアーキテクチャを採用している.起動時に、フレームワークはワークスレッドのセットを初期化し、このスレッドはスケジューラによって所定のジョブを実行するために使用されます.これがQuartzです.NETが複数のジョブを同時に実行できる仕組み.Quartz.NETは、スレッド環境を管理するために、緩やかに結合されたスレッドプール管理コンポーネントのセットに依存します.ジョブはタスクを実行する簡単です.NETクラス.Quartzを実現するだけですここからジョブが実行される唯一のメソッドExecute()を含むIJobインタフェース.IJobインタフェースとExecute()メソッドが実装されると、Quartz.NETがジョブ実行であると判断すると、ジョブが呼び出されます.Execute()メソッド内はやるべきことです.

Quartz.NETには次のような特徴があります


APIは操作が簡単で、数行の簡単なコードさえあれば、アプリケーションの中で自分のジョブのスケジューリングを実現することができ、リアルタイムでジョブの実行状況を監視するトリガ機能が強く、Windowsのタスク計画よりも細かいトリガ粒度を提供し、Cron式を使って毎週月曜日から金曜日の8:00 am、5:00 pm(作業時間)のようにあるタスクを実行するのに良好な拡張性を実現することができ、インタフェースに基づいてプログラミングすることができます.自分のScheduleスケジューラ、Jobジョブ、TriggerトリガなどのジョブをRAMに保存したり、データベースに永続化したりすることができます.SqlServer、Oracle、MySqlなどのクラスタをサポートします.これは高度なアプリケーションで、複数のコンピュータ間で負荷バランス、フォールトトレランス処理を作成できます.

Quartz.NET 2.0と以前のバージョンの改良


2012年4月9日Quartz.NET 2.0はReleased版をリリースしており、Java Quartzの2.1バージョンに対応し、アドレスをダウンロードしているhttp://quartznet.sourceforge.net/download.html .バージョン全体は1.0バージョンに対して大量の修正を行い、ユニットテストのコードはより友好的(より多くのインタフェースを再構築した)であり、APIは汎用和に基づいている.NET 3.5 SP 1以降の特性、例えばDateTimeOffset.これはQuartzです.NET史上最大で、最も興奮に値するバージョンです.
このリリースでは、パフォーマンスの向上に加えて、次のような新しい機能が追加されました.
  • Scheduler.Clear()は、すべてのタスク、トリガ、およびスケジュールをクリアするのに便利な方法
  • を提供する.
  • Scheduler.ScheduleJobs(IDictionary>triggersAndJobs,boolean replace)メソッドは、タスクおよびトリガ
  • を一括的に追加することができる
  • Scheduler.UnscheduleJobs(IList triggerKeys)メソッドは、一括キャンセルタスク
  • を提供する.
  • Scheduler.DeleteJobs(IList jobKeys)一括削除タスク
  • Scheduler.CheckExists(JobKey jobKey)とScheduler.CheckExists(TriggerKey triggerKey)は、タスクキーを検出するための一意性
  • を提供する.
  • AdoJobStore allows one set of tables to be used by multiple distinct scheduler instances
  • AdoJobStore is now capable of storing non-core Trigger implementations without using BLOB columns, through the use of the new TriggerPersistenceDelegate interface, which can (optionally) be implemented by implementers of custom Trigger types.
  • Cron式では、毎月の最終日と最終日を指定できます.たとえば、L-3は毎月の最終日の
  • です.
  • スケジューリング情報を含むXMLファイルは、起動時間と間隔時間を指定する方法
  • を追加する.
  • XMLファイルは、フリップフロップのpriorityプロパティ
  • の指定をサポートします.
  • コアタスクDirectoryScanJobを追加し、前のFileScanJobにミニmum ageパラメータ
  • を追加しました.
    2.0 APIでも重大な修正を行い、APIの戻り値の集合と汎用的な使用、曖昧さと冗長コードの除去、クライアントに公開すべきではない方法の隠蔽/削除、注目点の分離を高め、分野の特定言語DSLのコアエンティティ(jobs and triggers)を導入することで、互換性などの問題が自然に発生し、今からどのような重大な修正があるかを見てみましょう.
  • はサポートする.NET 1.1と2.0、Quartzが必要です.Net 2.0は少なくとも必要である.NET 3.5 SP 1は,新しい言語特性とクラスインタフェース
  • を採用したためである.
  • 多くの共通インタフェースの戻り値Arrayは、汎用IListおよびISetに変更されました.たとえば、GetJobGroup Names():string[]はGetJobGroup Names():IListに変更され、JobsおよびTriggersが現在JobsKeyおよびTriggersKeyに基づいていることを識別するために使用されます.KeysにはNameとGroupが含まれています.特定のjobs/triggersを操作する方法は、Keysをパラメータとして使用します.たとえばGetTrigger(TriggerKey):ITriggerがGetTrigger(string name,string group)を置き換えました.Trigger、ITriggerはクラスではなくインタフェースになりました.ISimpleTrigger、ICronTriggerも同じです.新しいDSL/builder-based API組織JobsとTriggers.
     IJobDetail job = JobBuilder.Create() .WithIdentity("job1", "group1") .Build();
     ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(DateBuilder.FutureDate(2, IntervalUnit.HOURS)) .WithSimpleSchedule(x => x.RepeatHourlyForever()) .ModifiedByCalendar("holidays") .Build();

  • JobInitializationPluginは削除され、
  • の代わりにXM LSchedulingDataProcessorPluginが使用されます.
  • Microsoft's Oracle driversは10 gまたは11 g ODPを使用してサポートされていません.NET drivers代替
  • データベースのSechemaが変更されました.databaseディレクトリの下のスクリプトを使用する必要があります.xのSchemaは2.0
  • にアップグレードされました
    変化は1.0より多くC 5を参照した.dll
    C5.dll 1つのC#と他のCLI言語の汎用集合クラス..Net2.0以上で使用できます.紹介住所:http://www.itu.dk/research/c5
    変化二quartzconfigに微細な変化がある
  • quartz.plugin.xml.typeは1.xのQuartz.Plugin.Xml.JobInitializationPlugin,Quartzは2.0のQuartzになった.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
  • 2.0バージョンでは、quartzを構成する行が追加されました.scheduler.exporter.channelName = httpQuart

  • 変化三実現IJobインタフェースJobExecutionContextオブジェクトがIJobExecutionContextになりました
    変化四quartz_jobs.xml構成セクションが変更されました
    変化五支持Netバージョンが異なる
  • Quartz 1.0はサポートできる.Net 1.1と.Net 2.0以降
  • Quartz 2.0はサポートのみである.Net 3.5以上のバージョンは、放棄しました.Net 1.1と.Net 2.0のサポート

  • Quartz.NET 2.2 ChangeLog


    This release contains important bug fixes, new functionality and minor breaking changes. UPGRADING Please examine and run the database\schema_20_to_22_upgrade.sql script if you are using AdoJobStore     this script adds a new column SCHED_TIME to table QRTZ_FIRED_TRIGGERS     file contains the alter command for SQL Server and other database samples in comments BREAKING CHANGES     database schema needs upgrade     add SchedulerStarting() method to ISchedulerListener interface     make the scheduler's TypeLoadHelper available to plugins when they are initialized     dbFailureRetryInterval parameter was removed from DirectSchedulerFactory APIs NEW FEATURES     ability to override worker thread names (when using SimpleThreadPool)     add new IScheduler method: ScheduleJob(IJobDetail job, ISet trigger) to schedule multiple triggers for a job all at once     allow 'triggerless' initial storing of non-durable jobs.     improvements for job recovery information     package job_scheduling_data_2_0.xsd to nuget package's content folder     allow scheduler exported with remoting to be used from local machine only     support for Oracle managed ODP driver FIXES     job ending with exception and trigger not going to fire again, trigger is incorrectly not removed from job store     XML schema supports multiple schedule elements but processor does not     DailyTimeIntervalTriggerPersistenceDelegate does not handle empty time interval properly     DailyTimeIntervalScheduleBuilder.EndingDailyAfterCount(...) doesn't pass validation     trace throwing exception     bug in QuartzSchedulerThread.GetRandomizedIdleWaitTime()     can't delete or replace job without the referenced class MISC     Performance improvements, including improvements to some select statements in AdoJobStore