Autofac.Extras.Quartz 10.0.0

dotnet add package Autofac.Extras.Quartz --version 10.0.0
                    
NuGet\Install-Package Autofac.Extras.Quartz -Version 10.0.0
                    
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" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Autofac.Extras.Quartz" Version="10.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Autofac.Extras.Quartz" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Autofac.Extras.Quartz --version 10.0.0
                    
#r "nuget: Autofac.Extras.Quartz, 10.0.0"
                    
#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.
#addin nuget:?package=Autofac.Extras.Quartz&version=10.0.0
                    
Install Autofac.Extras.Quartz as a Cake Addin
#tool nuget:?package=Autofac.Extras.Quartz&version=10.0.0
                    
Install Autofac.Extras.Quartz as a Cake Tool

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 200,758 3/7/2024
10.0.0-alpha0007 123 3/5/2024
10.0.0-alpha0006 139 3/4/2024
9.0.0 216,423 3/27/2023
8.2.0 69,247 1/30/2023
8.2.0-alpha0001 202 1/30/2023
8.1.0 2,439 1/24/2023
8.1.0-alpha0003 227 12/22/2022
8.1.0-alpha0002 205 12/22/2022
8.0.0 147,403 6/3/2022
7.4.0-alpha0007 270 6/2/2022
7.4.0-alpha0005 10,656 5/17/2022
7.4.0-alpha0002 217 5/8/2022
7.3.0 191,901 10/28/2021
7.3.0-alpha0009 306 10/28/2021
7.2.0 50,221 8/2/2021
7.2.0-alpha0006 318 8/1/2021
7.1.0 67,482 4/25/2021
7.1.0-alpha0011 329 8/1/2021
7.1.0-alpha0010 363 8/1/2021
7.1.0-alpha0009 380 8/1/2021
7.1.0-alpha0008 329 6/20/2021
7.1.0-alpha0006 321 4/30/2021
7.1.0-alpha0004 329 4/24/2021
7.1.0-alpha0003 368 4/24/2021
7.1.0-alpha0002 318 4/19/2021
7.1.0-alpha0001 308 4/19/2021
7.0.0 213,613 2/16/2021
7.0.0-beta0001 325 2/14/2021
7.0.0-alpha0024 343 2/14/2021
7.0.0-alpha0023 347 2/9/2021
6.3.0-alpha0001 338 2/9/2021
6.2.0 14,863 1/29/2021
6.2.0-beta0001 330 1/29/2021
6.2.0-alpha0008 343 1/28/2021
6.2.0-alpha0001 462 1/10/2021
6.1.0 17,812 1/10/2021
6.1.0-beta0001 377 1/4/2021
6.0.1 46,864 10/21/2020
6.0.1-beta0001 482 10/21/2020
6.0.0 72,073 10/9/2020
6.0.0-beta0001 444 10/9/2020
6.0.0-alpha0041 456 10/7/2020
6.0.0-alpha0039 486 10/7/2020
5.4.0 41,150 10/7/2020
5.4.0-beta0001 449 10/4/2020
5.4.0-alpha0007 443 10/4/2020
5.4.0-alpha0001 673 8/6/2020
5.3.0 40,280 8/6/2020
5.3.0-beta0001 470 8/6/2020
5.3.0-alpha0009 479 8/6/2020
5.3.0-alpha0008 536 7/27/2020
5.3.0-alpha0007 548 7/8/2020
5.3.0-alpha0001 1,085 5/19/2020
5.2.0 111,792 5/19/2020
5.2.0-beta0001 510 5/19/2020
5.2.0-alpha0023 504 5/19/2020
5.2.0-alpha0021 784 2/17/2020
5.1.0 163,527 2/17/2020
5.1.0-alpha0015 504 2/17/2020
5.1.0-alpha0014 577 2/8/2020
5.1.0-alpha0005 584 1/30/2020
5.0.0 27,783 1/30/2020
5.0.0-beta0001 592 1/30/2020
5.0.0-alpha0064 517 1/30/2020
4.7.0-alpha0013 3,209 1/29/2020
4.7.0-alpha0009 539 1/27/2020
4.7.0-alpha0007 1,970 11/18/2019
4.7.0-alpha0006 537 11/17/2019
4.7.0-alpha0005 572 11/8/2019
4.7.0-alpha0004 1,192 9/2/2019
4.6.0 226,069 9/2/2019
4.6.0-beta0001 594 9/1/2019
4.6.0-alpha0036 580 9/1/2019
4.6.0-alpha0034 570 9/1/2019
4.6.0-alpha0033 560 9/1/2019
4.6.0-alpha0028 638 7/13/2019
4.6.0-alpha0026 593 7/13/2019
4.6.0-alpha0024 574 7/6/2019
4.6.0-alpha0022 577 7/6/2019
4.6.0-alpha0018 578 7/6/2019
4.6.0-alpha0008 726 5/8/2019
4.6.0-alpha0005 595 5/8/2019
4.6.0-alpha0003 627 5/8/2019
4.6.0-alpha0001 755 3/10/2019
4.5.1 177,149 5/8/2019
4.5.1-beta0001 627 5/8/2019
4.5.0 110,178 3/9/2019
4.5.0-beta0001 630 3/9/2019
4.5.0-alpha0008 601 3/9/2019
4.5.0-alpha0007 630 3/8/2019
4.5.0-alpha0005 657 2/25/2019
4.5.0-alpha0003 882 2/11/2019
4.5.0-alpha0002 705 1/28/2019
4.5.0-alpha0001 722 1/27/2019
4.4.0 108,662 1/27/2019
4.4.0-beta0001 748 1/27/2019
4.4.0-alpha0014 1,104 9/29/2018
4.4.0-alpha0013 819 9/29/2018
4.4.0-alpha0012 802 9/29/2018
4.4.0-alpha0002 881 9/23/2018
4.4.0-alpha0001 814 9/19/2018
4.3.0 157,160 9/29/2018
4.3.0-beta0001 852 9/26/2018
4.3.0-alpha0008 1,528 7/11/2018
4.3.0-alpha0007 1,093 7/7/2018
4.3.0-alpha0006 1,089 7/7/2018
4.3.0-alpha0005 1,099 7/1/2018
4.2.0 43,771 7/1/2018
4.2.0-beta0001 1,077 6/30/2018
4.2.0-alpha0004 1,076 7/1/2018
4.2.0-alpha0003 1,502 5/13/2018
4.2.0-alpha0002 1,133 5/13/2018
4.2.0-alpha0001 1,137 5/13/2018
4.1.2 1,380 6/30/2018
4.1.1 62,965 5/13/2018
4.1.0-beta0004 1,136 5/13/2018
4.1.0-beta0001 1,147 5/13/2018
4.1.0-alpha0016 1,468 4/14/2018
4.0.0 68,550 1/14/2018
4.0.0-beta0007 1,248 1/14/2018
4.0.0-beta0006 1,171 1/13/2018
4.0.0-beta0001 1,111 1/13/2018
3.5.0 105,033 4/14/2018
3.5.0-unstable0012 1,260 1/5/2018
3.5.0-unstable0010 1,500 8/15/2017
3.5.0-unstable0004 1,048 8/1/2017
3.5.0-unstable0003 1,060 7/25/2017
3.5.0-unstable0002 1,097 6/21/2017
3.5.0-unstable0001 1,152 6/15/2017
3.5.0-beta0001 1,310 4/14/2018
3.4.0 126,631 5/5/2017
3.4.0-unstable0009 1,101 4/5/2017
3.4.0-unstable0008 1,067 4/5/2017
3.4.0-unstable0007 1,094 4/5/2017
3.4.0-unstable0006 1,044 4/5/2017
3.4.0-unstable0004 1,176 2/15/2017
3.4.0-unstable0001 1,166 12/4/2016
3.4.0-ci0000 1,049 4/5/2017
3.3.0 74,776 11/1/2016
3.3.0-unstable0001 1,174 11/1/2016
3.3.0-unstable0000 1,066 10/10/2016
3.2.0 8,391 10/10/2016
3.2.0-beta0001 1,063 10/10/2016
3.1.0 57,169 8/25/2016
3.1.0-unstable0022 1,062 10/9/2016
3.1.0-unstable0021 1,095 10/9/2016
3.0.0-unstable0020 1,182 7/17/2016
3.0.0-unstable0017 1,143 8/24/2016
3.0.0-unstable0013 1,110 7/17/2016
3.0.0-unstable0012 1,120 7/17/2016
3.0.0-unstable0011 1,110 7/17/2016
3.0.0-beta-1 1,190 7/4/2016
3.0.0-alpha0014 1,067 7/20/2016
2.2.0-unstable0012 1,158 7/19/2016
2.1.1 19,294 7/16/2016
2.1.0 38,592 4/8/2016
2.0.0.1 1,749 4/6/2016
1.7.0 43,288 10/29/2015
1.6.0 3,370 10/25/2015
1.5.1 19,936 7/14/2015
1.5.0 1,466 7/14/2015
1.4.0 5,044 6/12/2015
1.3.0 16,972 2/1/2015
1.2.0 3,671 1/26/2015
1.1.1 6,495 11/15/2014
1.1.0 10,291 7/13/2014
1.0.0 2,872 7/2/2014
0.11.0 2,021 5/18/2014
0.10.0 1,912 4/9/2014
0.9.0 5,794 4/7/2014