Quartz.NET - Quartz Enterprise Scheduler .NET

Quartz Enterprise Scheduler .NET

Quartz.NET is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.

Quartz.NET is a pure .NET library written in C# and is a port of very popular open source Java job scheduling framework, Quartz. This project owes very much to original Java project, it’s father James House and the project contributors.

Quartz.NET 3.0 Alpha 3 Released

30 July 2017 by Marko Lahma

This is the third alpha of v3. APIs have had some love in form of adding CancellationToken support and using more IReadOnlyCollections more concisely. Unfortunately we still don't have the story done for remote management support (HTTP API).

When using AdoJobStore: make sure to run both 2.6 and 3.0 SQL migration scripts if you are upgrading from 2.5, otherwise just 3.0 migration script

NEW FEATURE

  • support for .NET Standard 2.0 preview (#486)
  • support for MySQL on .NET Standard via provider ‘MySql’ (#493)
  • change SQL database IMAGE types to VARBINARY - requires migration schema_26_to_30.sql
  • add ISchedulerListener.JobInterrupted(JobKey jobKey, CancellationToken cancellationToken) (#467)

FIXES

  • fix PosgreSQL db provider configuration for .NET Core (#449)
  • CancellationToken is now supported in async methods (#444)
  • fix regression with XML schema validation

BREAKING CHANGES

  • possibly breaking, cron expression validation is now stricter (#315 #485)
  • .NET 4.6 required instead of old 4.5
  • API methods have been revisited to mainly use IReadOnlyCollection, this hides both HashSets and Lists
  • LibLog has been hidden as internal (ILog etc), like it was originally intended to be

KNOWN ISSUES

  • Issues with time zone ids between Windows and Linux, they use different ids for the same zone
  • No remoting support
  • Documentation lacking

Check NuGet for pre-release packages.

Quartz.NET 2.6 Released

30 July 2017 by Marko Lahma

Addition of column required to database

  • This release fixes a long standing issue, DailyTimeIntervalTrigger’s time zone is now finally persisted to database
  • This requires running schema_25_to_26_upgrade.sql to add new column to QRTZ_SIMPROP_TRIGGERS table

A slight performance boost can also be unlocked when using PostgreSQL by switching PostgreSqlDelegate.

NEW FEATURE

  • Add support for eager validation of job scheduling XML file on plugin start (#492)
  • Add support for extra custom time zone resolver function in TimeZoneUtil (#290)

FIXES

  • CalendarIntervalTrigger’s first fire time doesn’t consider time zone (#505)
  • QRTZ_FIRED_TRIGGERS.ENTRY_ID column length too small (#474)
  • Decrease log level for message when host name is too long (#471)
  • Quartz should not log transient faults related to azure db connection as errors (#470)
  • RemotingSchedulerExporter can’t create remoting channel on Mono (#464)
  • Regression in 2.5, TriggerBuilder.UsingJobData(JobDataMap newJobDataMap) should ovewrite existing (#460)
  • QuartzScheduler.Clear does not clear QRTZ_FIRED_TRIGGERS table (#437)
  • No wait time between db connection failures with AcquireNextTriggers (#428)
  • DailyTimeIntervalTriggerImpl prevents altering EndTimeOfDay to a later time of day (#382)
  • Quartz.CronExpression.IsSatisfiedBy claims to ignore milliseconds but doesn’t (#349)
  • Add back PostgreSqlDelegate to support database LIMIT in trigger acquiring (#318)
  • Bug in XSD schema: cannot set IgnoreMisfirePolicy (#280)
  • Quartz.Xml.XMLSchedulingDataProcessor uses GetType() instead of typeof(Quartz.Xml.XMLSchedulingDataProcessor) (#277)
  • With SQLite default isolation level should be set to serializable (#242)
  • DailyTimeIntervalTrigger’s time zone is not persisted into database (#136)
  • XMLSchedulingDataProcessorPlugin incompatible with StdAdoDelegate when useProperties=true (#44)
  • Trigger loop encountered using DailyTimeIntervalTrigger across DST start boundary (#332)

Grab it from downloads page.

Quartz.NET 2.5 Released

18 February 2017 by Marko Lahma

This release contains mainly bug fixes but because there’s a behavioral change in DST handling (for the better) that warrants for a minor version number increment.

See the GitHub issue for details.

FIXES

  • Jobs get stuck in the Blocked state after the DB connection is lost in NotifyJobListenersComplete (#282)
  • Oracle rownum based queries can work wrong after Oracle SQL tuning task has ran (#413)
  • Handle DST better (#317)
  • RAMJobStore fails to resume when paused without triggers (#433)
  • CronExpression doesn’t properly check the range when an “/interval” is specified (#432)
  • Fix JobDataMap dirty flag when constructing from existing map (#431)
  • Store triggers by job in RAMJobStore for better performance (#430)
  • Create WorkerThread in virtual method (#426)
  • SqlSelectJobForTrigger is not using primary key join and causes index scan (#407)

Grab it from downloads page.

Quartz.NET 3.0 Alpha 2 Released

24 August 2016 by Marko Lahma

This is the second alpha of v3. This release fixes problems with schedule signaling when AdoJobStore is in use. This release removes the last bits of Quartz’s usage of thread local storage and thus makes async-based operations a lot safer.

FIXES

  • fix scheduler signaling not working with AdoJobStore due to thread local storage
  • thread local state removed altogether
  • quartz.serializer.type was required even though non-serializing RAMJobStore was in use
  • JSON serialization incorrectly called serialization callbacks

BREAKING CHANGES

  • IStatefulJob was removed, been obsolete since 2.x
  • ISemaphore interface now passes Guid requestorId that defines lock owner instead of implicit thread name

KNOWN ISSUES

  • Issues with time zone ids between Windows and Linux, they use different ids for the same zone
  • No remoting support
  • Documentation lacking

Check NuGet for pre-release packages.

Quartz.NET 2.4.1 Released

24 August 2016 by Marko Lahma

Minor release that just makes Common.Logging 3.3.1 bound by compilation process and not just by NuGet version reference.

FIXES

  • Fix Common.Logging version 3.3.1 to be a true binary reference instead of just NuGet dependency

Grab it from downloads page.

Quartz.NET 2.4 Released

18 August 2016 by Marko Lahma

Right on the heels of Quartz.NET 3.0 Alpha 1 we now have a small maintenance version. With version 2.4 we are slowing things down with 2.x series and concentrate effors on v3 development.

NEW FEATURE

  • Add SQL limit support for MySQLDelegate
  • Removed dbFailureRetryInterval since it is no longer used
  • Update Common Logging to v3.3.1

FIXES

  • Batch acquisition can cause early firing of triggers
  • Should not rely on C5.TreeSet on HolidayCalendar field serialization

Grab it from downloads page.

Quartz.NET 3.0 Alpha 1 Released

16 August 2016 by Marko Lahma

This is the first alpha release from the long-awaited v3 branch. This is a big overhaul (and still in progress). Internals are being modernized whilst still trying to keep sane upgrade path.

A big thank you goes to Mike Rousos who really made it possible to get Quartz.NET working on .NET Core. Daniel Marbach also contributed a lot with ideas and code to async side. And of course never forgetting the community members that have provided feedback and fixes.

Please see the migration guide that is a work in progess.

Use at your own risk, might not be that production ready yet

What does alpha mean?

  • All existing (and new) tests passing
  • Cheese might still get moved, alpha means that APIs can change, features can come and go

NEW FEATURE

  • Task based jobs with async/await support, internals work in async/await manner
  • Support .NET Core / netstandard 1.3
  • Separate NuGet package Quartz.Serialization.Json to enable JSON based AdoJobStore serialization (no binary serialization available in .NET Core)
  • Common.Logging removed from dependencies
  • C5 Collections removed from ILMerge process, no longer needed

BREAKING CHANGES

  • .NET 4.5/netstandard1.3 required
  • SimpleThreadPool is gone, old owned threads are gone
  • Scheduler methods have been changed to be Task based, remember to await them
  • IJob interface now returns a task
  • Some IList properties have been changed to IReadOnlyList to properly reflect intent
  • SQL Server CE support has been dropped
  • DailyCalendar uses now datetimes for excluded dates and has ISet interface to access them
  • IObjectSerializer has new method, void Initialize(), that has to be implemented
  • IInterruptableJob removed in favor of context’s CancellationToken

KNOWN ISSUES

  • Issues with time zone ids between Windows and Linux, they use different ids for the same zone
  • No remoting support
  • Documentation lacking

Check NuGet for pre-release packages.

Quartz.NET 2.3.3 Released

9 July 2015 by Marko Lahma

This is a minor release containing mostly bug fixes.

NEW FEATURE

  • Support generic job types with AdoJobStore

FIXES

  • AdoJobStore doesn’t notify about removing orphaned job
  • Store null JobData in JobDetails if it’s empty
  • Documentation error in SimpleTriggerImpl UpdateAfterMisfire
  • Ensure IDriverDelegate members in StdAdoDelegate are virtual

Grab it from downloads page.

Older news can be found from the news archive ».

Search

 

Quartz.NET

Related

Project Supporters

SourceForge.net Logo