Autofac.Extras.Quartz 10.0.0-alpha0007

This is a prerelease version of Autofac.Extras.Quartz.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Autofac.Extras.Quartz --version 10.0.0-alpha0007                
NuGet\Install-Package Autofac.Extras.Quartz -Version 10.0.0-alpha0007                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Autofac.Extras.Quartz" Version="10.0.0-alpha0007" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Autofac.Extras.Quartz --version 10.0.0-alpha0007                
#r "nuget: Autofac.Extras.Quartz, 10.0.0-alpha0007"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Autofac.Extras.Quartz as a Cake Addin
#addin nuget:?package=Autofac.Extras.Quartz&version=10.0.0-alpha0007&prerelease

// Install Autofac.Extras.Quartz as a Cake Tool
#tool nuget:?package=Autofac.Extras.Quartz&version=10.0.0-alpha0007&prerelease                

Autofac.Extras.Quartz

Autofac integration package for Quartz.Net.

Autofac.Extras.Quartz creates nested litefime scope for each Quartz Job. Nested scope is disposed after job execution has been completed.

This allows to have single instance per job execution as well as deterministic disposal of resources.

Install package via Nuget: install-package Autofac.Extras.Quartz

Build status

Stable Pre-release
Build Master branch Development branch
NuGet NuGet NuGet
CodeCov codecov codecov

Usage example

Autofac configuration for Quartz includes two steps:

  1. Scheduler registration
  2. Job registration

Scheduler registration

QuartzAutofacFactoryModule registers custom ISchedulerFactory and default instance of IScheduler in Autofac container. Both factory and schedulere are registered as singletones. Note: Is is important to resolve IScheduler from container, rather than using default one to get jobs resolved by Autofac.

Optionally custom Quartz configuration can be passed using ConfigurationProvider property. Provider is callback which returns settings using NameValueCollection.

Job scope configuration

Starting with version 7 QuartzAutofacFactoryModule provides a way to customize lifetime scope configuration for job. This can be done via JobScopeConfigurator parameter.

cb.Register(_ => new ScopedDependency("global"))
    .AsImplementedInterfaces()
    .SingleInstance();

cb.RegisterModule(new QuartzAutofacFactoryModule {
    JobScopeConfigurator = (builder, jobScopeTag) => {
        // override dependency for job scope
        builder.Register(_ => new ScopedDependency("job-local "+ DateTime.UtcNow.ToLongTimeString()))
            .AsImplementedInterfaces()
            .InstancePerMatchingLifetimeScope(jobScopeTag);

    }
});

See src/Samples/Shared/Bootstrap.cs for details.

Job registration

QuartzAutofacJobsModule scans given assemblies and registers all non-abstract implementors of IJob interface as transient instances.

internal static ContainerBuilder ConfigureContainer(ContainerBuilder cb)
{
	// 1) Register IScheduler
	cb.RegisterModule(new QuartzAutofacFactoryModule()); 
	// 2) Register jobs
	cb.RegisterModule(new QuartzAutofacJobsModule(typeof (CleanupExpiredAnnouncemetsJob).Assembly));
}

Starting Quartz

Make sure to start the scheduler after it was resolved from Autofac. E.g.

var scheduler = _container.Resolve<IScheduler>();
scheduler.Start();

Sample projects

TopShelf-based sample was removed since Topshelf.Quartz is not compatible with Quartz 3 as af now.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (14)

Showing the top 5 NuGet packages that depend on Autofac.Extras.Quartz:

Package Downloads
Lauener.Core.Triggers

A easy to use Quartz implementation

TripleSix.Core

Package Description

HwApp.Quartz

HwApp Quartz & Quartzmin

SyWaterStandardLibrary

舜禹框架Core 3.0

Cogito.Quartz.Autofac

Provides utilites and extensions for Quartz and Autofac.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Autofac.Extras.Quartz:

Repository Stars
PlexRipper/PlexRipper
A cross-platform Plex media downloader that seamlessly adds media from other Plex servers to your own!
Version Downloads Last updated
10.0.0 158,005 3/7/2024
10.0.0-alpha0007 122 3/5/2024
10.0.0-alpha0006 138 3/4/2024
9.0.0 207,856 3/27/2023
8.2.0 67,384 1/30/2023
8.2.0-alpha0001 198 1/30/2023
8.1.0 2,389 1/24/2023
8.1.0-alpha0003 224 12/22/2022
8.1.0-alpha0002 202 12/22/2022
8.0.0 144,990 6/3/2022
7.4.0-alpha0007 264 6/2/2022
7.4.0-alpha0005 10,295 5/17/2022
7.4.0-alpha0002 209 5/8/2022
7.3.0 189,811 10/28/2021
7.3.0-alpha0009 296 10/28/2021
7.2.0 49,810 8/2/2021
7.2.0-alpha0006 308 8/1/2021
7.1.0 67,012 4/25/2021
7.1.0-alpha0011 319 8/1/2021
7.1.0-alpha0010 352 8/1/2021
7.1.0-alpha0009 370 8/1/2021
7.1.0-alpha0008 319 6/20/2021
7.1.0-alpha0006 309 4/30/2021
7.1.0-alpha0004 317 4/24/2021
7.1.0-alpha0003 356 4/24/2021
7.1.0-alpha0002 306 4/19/2021
7.1.0-alpha0001 296 4/19/2021
7.0.0 209,115 2/16/2021
7.0.0-beta0001 310 2/14/2021
7.0.0-alpha0024 328 2/14/2021
7.0.0-alpha0023 332 2/9/2021
6.3.0-alpha0001 323 2/9/2021
6.2.0 14,613 1/29/2021
6.2.0-beta0001 315 1/29/2021
6.2.0-alpha0008 328 1/28/2021
6.2.0-alpha0001 447 1/10/2021
6.1.0 17,754 1/10/2021
6.1.0-beta0001 362 1/4/2021
6.0.1 45,956 10/21/2020
6.0.1-beta0001 466 10/21/2020
6.0.0 69,578 10/9/2020
6.0.0-beta0001 429 10/9/2020
6.0.0-alpha0041 440 10/7/2020
6.0.0-alpha0039 470 10/7/2020
5.4.0 40,358 10/7/2020
5.4.0-beta0001 434 10/4/2020
5.4.0-alpha0007 429 10/4/2020
5.4.0-alpha0001 658 8/6/2020
5.3.0 39,343 8/6/2020
5.3.0-beta0001 455 8/6/2020
5.3.0-alpha0009 464 8/6/2020
5.3.0-alpha0008 521 7/27/2020
5.3.0-alpha0007 533 7/8/2020
5.3.0-alpha0001 1,069 5/19/2020
5.2.0 109,404 5/19/2020
5.2.0-beta0001 494 5/19/2020
5.2.0-alpha0023 489 5/19/2020
5.2.0-alpha0021 769 2/17/2020
5.1.0 161,695 2/17/2020
5.1.0-alpha0015 488 2/17/2020
5.1.0-alpha0014 562 2/8/2020
5.1.0-alpha0005 568 1/30/2020
5.0.0 27,351 1/30/2020
5.0.0-beta0001 577 1/30/2020
5.0.0-alpha0064 501 1/30/2020
4.7.0-alpha0013 3,133 1/29/2020
4.7.0-alpha0009 523 1/27/2020
4.7.0-alpha0007 1,912 11/18/2019
4.7.0-alpha0006 521 11/17/2019
4.7.0-alpha0005 556 11/8/2019
4.7.0-alpha0004 1,175 9/2/2019
4.6.0 220,474 9/2/2019
4.6.0-beta0001 577 9/1/2019
4.6.0-alpha0036 563 9/1/2019
4.6.0-alpha0034 553 9/1/2019
4.6.0-alpha0033 544 9/1/2019
4.6.0-alpha0028 621 7/13/2019
4.6.0-alpha0026 576 7/13/2019
4.6.0-alpha0024 557 7/6/2019
4.6.0-alpha0022 561 7/6/2019
4.6.0-alpha0018 561 7/6/2019
4.6.0-alpha0008 706 5/8/2019
4.6.0-alpha0005 577 5/8/2019
4.6.0-alpha0003 609 5/8/2019
4.6.0-alpha0001 737 3/10/2019
4.5.1 176,263 5/8/2019
4.5.1-beta0001 609 5/8/2019
4.5.0 110,002 3/9/2019
4.5.0-beta0001 613 3/9/2019
4.5.0-alpha0008 583 3/9/2019
4.5.0-alpha0007 612 3/8/2019
4.5.0-alpha0005 639 2/25/2019
4.5.0-alpha0003 865 2/11/2019
4.5.0-alpha0002 687 1/28/2019
4.5.0-alpha0001 698 1/27/2019
4.4.0 107,083 1/27/2019
4.4.0-beta0001 731 1/27/2019
4.4.0-alpha0014 1,082 9/29/2018
4.4.0-alpha0013 797 9/29/2018
4.4.0-alpha0012 781 9/29/2018
4.4.0-alpha0002 860 9/23/2018
4.4.0-alpha0001 793 9/19/2018
4.3.0 155,885 9/29/2018
4.3.0-beta0001 832 9/26/2018
4.3.0-alpha0008 1,467 7/11/2018
4.3.0-alpha0007 1,032 7/7/2018
4.3.0-alpha0006 1,028 7/7/2018
4.3.0-alpha0005 1,039 7/1/2018
4.2.0 43,208 7/1/2018
4.2.0-beta0001 1,016 6/30/2018
4.2.0-alpha0004 1,015 7/1/2018
4.2.0-alpha0003 1,441 5/13/2018
4.2.0-alpha0002 1,072 5/13/2018
4.2.0-alpha0001 1,077 5/13/2018
4.1.2 1,317 6/30/2018
4.1.1 62,126 5/13/2018
4.1.0-beta0004 1,075 5/13/2018
4.1.0-beta0001 1,087 5/13/2018
4.1.0-alpha0016 1,408 4/14/2018
4.0.0 67,889 1/14/2018
4.0.0-beta0007 1,188 1/14/2018
4.0.0-beta0006 1,110 1/13/2018
4.0.0-beta0001 1,050 1/13/2018
3.5.0 103,058 4/14/2018
3.5.0-unstable0012 1,199 1/5/2018
3.5.0-unstable0010 1,459 8/15/2017
3.5.0-unstable0004 1,007 8/1/2017
3.5.0-unstable0003 1,019 7/25/2017
3.5.0-unstable0002 1,056 6/21/2017
3.5.0-unstable0001 1,108 6/15/2017
3.5.0-beta0001 1,249 4/14/2018
3.4.0 124,727 5/5/2017
3.4.0-unstable0009 1,059 4/5/2017
3.4.0-unstable0008 1,025 4/5/2017
3.4.0-unstable0007 1,053 4/5/2017
3.4.0-unstable0006 1,002 4/5/2017
3.4.0-unstable0004 1,134 2/15/2017
3.4.0-unstable0001 1,124 12/4/2016
3.4.0-ci0000 1,007 4/5/2017
3.3.0 74,138 11/1/2016
3.3.0-unstable0001 1,134 11/1/2016
3.3.0-unstable0000 1,026 10/10/2016
3.2.0 8,212 10/10/2016
3.2.0-beta0001 1,022 10/10/2016
3.1.0 57,037 8/25/2016
3.1.0-unstable0022 1,021 10/9/2016
3.1.0-unstable0021 1,055 10/9/2016
3.0.0-unstable0020 1,142 7/17/2016
3.0.0-unstable0017 1,103 8/24/2016
3.0.0-unstable0013 1,069 7/17/2016
3.0.0-unstable0012 1,080 7/17/2016
3.0.0-unstable0011 1,070 7/17/2016
3.0.0-beta-1 1,149 7/4/2016
3.0.0-alpha0014 1,026 7/20/2016
2.2.0-unstable0012 1,118 7/19/2016
2.1.1 19,199 7/16/2016
2.1.0 38,295 4/8/2016
2.0.0.1 1,702 4/6/2016
1.7.0 42,315 10/29/2015
1.6.0 3,297 10/25/2015
1.5.1 19,665 7/14/2015
1.5.0 1,421 7/14/2015
1.4.0 4,999 6/12/2015
1.3.0 16,900 2/1/2015
1.2.0 3,462 1/26/2015
1.1.1 6,414 11/15/2014
1.1.0 10,245 7/13/2014
1.0.0 2,825 7/2/2014
0.11.0 1,974 5/18/2014
0.10.0 1,866 4/9/2014
0.9.0 5,712 4/7/2014