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 2.6.1 Released

9 October 2017 by Marko Lahma

This is a maintenance release fixing an issue where misfire handling is being too slow at times. This regression has been present since version 2.4.

NEW FEATURE

  • Allow performing misfire handling more frequently than misfireThreshold (#532)

FIXES

  • Incomplete recovery of misfired jobs when using database-specific delegate types (#531)

Grab it from downloads page.

Quartz.NET 3.0 Beta 1 Released

8 October 2017 by Marko Lahma

This is the first beta of v3. Stabilization and testing has been well underway.

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

  • returned .NET Framework 4.5.2 compatibility to better support library consumers like NServiceBus and MassTransit
  • netstandard 2.0 is now minimum for .NET Core
  • support for Microsoft.Data.Sqlite via provider name SQLite-Microsoft, the old provider SQLite also still works
  • Firebird is supported in .NET Core
  • Added preliminary support for SQL Server Memory-Optimized tables and Quartz.Impl.AdoJobStore.UpdateLockRowSemaphoreMOT

BREAKING CHANGES

  • Jobs and plugins are now in a separate assemblies/NuGet packages Quartz.Jobs and Quartz.Plugins
  • ADO.NET provider names have been simplified, the provider names are without version, e.g. SqlServer-20 => SqlServer

KNOWN ISSUES

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

Check NuGet for pre-release packages.

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.

Older news can be found from the news archive ».

Search

 

Quartz.NET

Related

Project Supporters

SourceForge.net Logo