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.
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.
// Install Autofac.Extras.Quartz as a Cake Addin
#addin nuget:?package=Autofac.Extras.Quartz&version=10.0.0

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

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. 
.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
The best cross-platform Plex media downloader there is! In active development and feedback is very welcome!
Version Downloads Last updated
10.0.0 67,115 3/7/2024
10.0.0-alpha0007 106 3/5/2024
10.0.0-alpha0006 123 3/4/2024
9.0.0 175,207 3/27/2023
8.2.0 59,903 1/30/2023
8.2.0-alpha0001 183 1/30/2023
8.1.0 2,358 1/24/2023
8.1.0-alpha0003 208 12/22/2022
8.1.0-alpha0002 186 12/22/2022
8.0.0 135,881 6/3/2022
7.4.0-alpha0007 245 6/2/2022
7.4.0-alpha0005 8,129 5/17/2022
7.4.0-alpha0002 192 5/8/2022
7.3.0 181,990 10/28/2021
7.3.0-alpha0009 277 10/28/2021
7.2.0 48,314 8/2/2021
7.2.0-alpha0006 290 8/1/2021
7.1.0 64,788 4/25/2021
7.1.0-alpha0011 301 8/1/2021
7.1.0-alpha0010 334 8/1/2021
7.1.0-alpha0009 352 8/1/2021
7.1.0-alpha0008 299 6/20/2021
7.1.0-alpha0006 288 4/30/2021
7.1.0-alpha0004 296 4/24/2021
7.1.0-alpha0003 335 4/24/2021
7.1.0-alpha0002 285 4/19/2021
7.1.0-alpha0001 277 4/19/2021
7.0.0 184,398 2/16/2021
7.0.0-beta0001 288 2/14/2021
7.0.0-alpha0024 306 2/14/2021
7.0.0-alpha0023 311 2/9/2021
6.3.0-alpha0001 303 2/9/2021
6.2.0 13,677 1/29/2021
6.2.0-beta0001 293 1/29/2021
6.2.0-alpha0008 308 1/28/2021
6.2.0-alpha0001 426 1/10/2021
6.1.0 17,682 1/10/2021
6.1.0-beta0001 339 1/4/2021
6.0.1 43,589 10/21/2020
6.0.1-beta0001 444 10/21/2020
6.0.0 61,883 10/9/2020
6.0.0-beta0001 407 10/9/2020
6.0.0-alpha0041 418 10/7/2020
6.0.0-alpha0039 448 10/7/2020
5.4.0 36,473 10/7/2020
5.4.0-beta0001 413 10/4/2020
5.4.0-alpha0007 407 10/4/2020
5.4.0-alpha0001 630 8/6/2020
5.3.0 36,994 8/6/2020
5.3.0-beta0001 432 8/6/2020
5.3.0-alpha0009 442 8/6/2020
5.3.0-alpha0008 497 7/27/2020
5.3.0-alpha0007 509 7/8/2020
5.3.0-alpha0001 1,045 5/19/2020
5.2.0 103,581 5/19/2020
5.2.0-beta0001 471 5/19/2020
5.2.0-alpha0023 465 5/19/2020
5.2.0-alpha0021 745 2/17/2020
5.1.0 154,334 2/17/2020
5.1.0-alpha0015 465 2/17/2020
5.1.0-alpha0014 538 2/8/2020
5.1.0-alpha0005 543 1/30/2020
5.0.0 25,600 1/30/2020
5.0.0-beta0001 552 1/30/2020
5.0.0-alpha0064 477 1/30/2020
4.7.0-alpha0013 2,845 1/29/2020
4.7.0-alpha0009 499 1/27/2020
4.7.0-alpha0007 1,750 11/18/2019
4.7.0-alpha0006 497 11/17/2019
4.7.0-alpha0005 532 11/8/2019
4.7.0-alpha0004 1,150 9/2/2019
4.6.0 204,469 9/2/2019
4.6.0-beta0001 551 9/1/2019
4.6.0-alpha0036 540 9/1/2019
4.6.0-alpha0034 526 9/1/2019
4.6.0-alpha0033 519 9/1/2019
4.6.0-alpha0028 594 7/13/2019
4.6.0-alpha0026 552 7/13/2019
4.6.0-alpha0024 532 7/6/2019
4.6.0-alpha0022 529 7/6/2019
4.6.0-alpha0018 536 7/6/2019
4.6.0-alpha0008 673 5/8/2019
4.6.0-alpha0005 551 5/8/2019
4.6.0-alpha0003 582 5/8/2019
4.6.0-alpha0001 711 3/10/2019
4.5.1 172,825 5/8/2019
4.5.1-beta0001 583 5/8/2019
4.5.0 109,685 3/9/2019
4.5.0-beta0001 586 3/9/2019
4.5.0-alpha0008 556 3/9/2019
4.5.0-alpha0007 581 3/8/2019
4.5.0-alpha0005 606 2/25/2019
4.5.0-alpha0003 836 2/11/2019
4.5.0-alpha0002 656 1/28/2019
4.5.0-alpha0001 667 1/27/2019
4.4.0 102,676 1/27/2019
4.4.0-beta0001 699 1/27/2019
4.4.0-alpha0014 1,039 9/29/2018
4.4.0-alpha0013 757 9/29/2018
4.4.0-alpha0012 741 9/29/2018
4.4.0-alpha0002 816 9/23/2018
4.4.0-alpha0001 749 9/19/2018
4.3.0 152,981 9/29/2018
4.3.0-beta0001 787 9/26/2018
4.3.0-alpha0008 1,383 7/11/2018
4.3.0-alpha0007 947 7/7/2018
4.3.0-alpha0006 944 7/7/2018
4.3.0-alpha0005 953 7/1/2018
4.2.0 41,392 7/1/2018
4.2.0-beta0001 930 6/30/2018
4.2.0-alpha0004 928 7/1/2018
4.2.0-alpha0003 1,344 5/13/2018
4.2.0-alpha0002 974 5/13/2018
4.2.0-alpha0001 977 5/13/2018
4.1.2 1,227 6/30/2018
4.1.1 59,653 5/13/2018
4.1.0-beta0004 979 5/13/2018
4.1.0-beta0001 991 5/13/2018
4.1.0-alpha0016 1,311 4/14/2018
4.0.0 64,831 1/14/2018
4.0.0-beta0007 1,088 1/14/2018
4.0.0-beta0006 1,010 1/13/2018
4.0.0-beta0001 950 1/13/2018
3.5.0 94,534 4/14/2018
3.5.0-unstable0012 1,099 1/5/2018
3.5.0-unstable0010 1,387 8/15/2017
3.5.0-unstable0004 935 8/1/2017
3.5.0-unstable0003 948 7/25/2017
3.5.0-unstable0002 984 6/21/2017
3.5.0-unstable0001 1,032 6/15/2017
3.5.0-beta0001 1,153 4/14/2018
3.4.0 118,713 5/5/2017
3.4.0-unstable0009 987 4/5/2017
3.4.0-unstable0008 955 4/5/2017
3.4.0-unstable0007 982 4/5/2017
3.4.0-unstable0006 932 4/5/2017
3.4.0-unstable0004 1,058 2/15/2017
3.4.0-unstable0001 1,054 12/4/2016
3.4.0-ci0000 935 4/5/2017
3.3.0 71,432 11/1/2016
3.3.0-unstable0001 1,060 11/1/2016
3.3.0-unstable0000 953 10/10/2016
3.2.0 7,765 10/10/2016
3.2.0-beta0001 950 10/10/2016
3.1.0 56,169 8/25/2016
3.1.0-unstable0022 948 10/9/2016
3.1.0-unstable0021 983 10/9/2016
3.0.0-unstable0020 1,069 7/17/2016
3.0.0-unstable0017 1,031 8/24/2016
3.0.0-unstable0013 994 7/17/2016
3.0.0-unstable0012 1,005 7/17/2016
3.0.0-unstable0011 997 7/17/2016
3.0.0-beta-1 1,074 7/4/2016
3.0.0-alpha0014 953 7/20/2016
2.2.0-unstable0012 1,043 7/19/2016
2.1.1 18,731 7/16/2016
2.1.0 37,720 4/8/2016
2.0.0.1 1,620 4/6/2016
1.7.0 39,857 10/29/2015
1.6.0 3,168 10/25/2015
1.5.1 18,784 7/14/2015
1.5.0 1,340 7/14/2015
1.4.0 4,905 6/12/2015
1.3.0 16,723 2/1/2015
1.2.0 3,037 1/26/2015
1.1.1 6,099 11/15/2014
1.1.0 10,159 7/13/2014
1.0.0 2,683 7/2/2014
0.11.0 1,886 5/18/2014
0.10.0 1,776 4/9/2014
0.9.0 5,551 4/7/2014