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

Inaction.Web

.net core Web快速开发框架

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 29,788 3/7/2024
10.0.0-alpha0007 81 3/5/2024
10.0.0-alpha0006 99 3/4/2024
9.0.0 146,996 3/27/2023
8.2.0 54,727 1/30/2023
8.2.0-alpha0001 166 1/30/2023
8.1.0 2,335 1/24/2023
8.1.0-alpha0003 189 12/22/2022
8.1.0-alpha0002 168 12/22/2022
8.0.0 130,083 6/3/2022
7.4.0-alpha0007 225 6/2/2022
7.4.0-alpha0005 7,122 5/17/2022
7.4.0-alpha0002 167 5/8/2022
7.3.0 175,956 10/28/2021
7.3.0-alpha0009 261 10/28/2021
7.2.0 47,261 8/2/2021
7.2.0-alpha0006 272 8/1/2021
7.1.0 63,024 4/25/2021
7.1.0-alpha0011 280 8/1/2021
7.1.0-alpha0010 316 8/1/2021
7.1.0-alpha0009 333 8/1/2021
7.1.0-alpha0008 278 6/20/2021
7.1.0-alpha0006 273 4/30/2021
7.1.0-alpha0004 276 4/24/2021
7.1.0-alpha0003 288 4/24/2021
7.1.0-alpha0002 267 4/19/2021
7.1.0-alpha0001 260 4/19/2021
7.0.0 164,575 2/16/2021
7.0.0-beta0001 273 2/14/2021
7.0.0-alpha0024 290 2/14/2021
7.0.0-alpha0023 290 2/9/2021
6.3.0-alpha0001 286 2/9/2021
6.2.0 13,132 1/29/2021
6.2.0-beta0001 279 1/29/2021
6.2.0-alpha0008 292 1/28/2021
6.2.0-alpha0001 412 1/10/2021
6.1.0 17,614 1/10/2021
6.1.0-beta0001 322 1/4/2021
6.0.1 42,387 10/21/2020
6.0.1-beta0001 429 10/21/2020
6.0.0 57,165 10/9/2020
6.0.0-beta0001 393 10/9/2020
6.0.0-alpha0041 402 10/7/2020
6.0.0-alpha0039 430 10/7/2020
5.4.0 34,174 10/7/2020
5.4.0-beta0001 397 10/4/2020
5.4.0-alpha0007 392 10/4/2020
5.4.0-alpha0001 610 8/6/2020
5.3.0 35,863 8/6/2020
5.3.0-beta0001 417 8/6/2020
5.3.0-alpha0009 426 8/6/2020
5.3.0-alpha0008 482 7/27/2020
5.3.0-alpha0007 494 7/8/2020
5.3.0-alpha0001 1,024 5/19/2020
5.2.0 100,380 5/19/2020
5.2.0-beta0001 455 5/19/2020
5.2.0-alpha0023 450 5/19/2020
5.2.0-alpha0021 729 2/17/2020
5.1.0 150,404 2/17/2020
5.1.0-alpha0015 448 2/17/2020
5.1.0-alpha0014 523 2/8/2020
5.1.0-alpha0005 528 1/30/2020
5.0.0 24,285 1/30/2020
5.0.0-beta0001 536 1/30/2020
5.0.0-alpha0064 460 1/30/2020
4.7.0-alpha0013 2,508 1/29/2020
4.7.0-alpha0009 483 1/27/2020
4.7.0-alpha0007 1,670 11/18/2019
4.7.0-alpha0006 476 11/17/2019
4.7.0-alpha0005 512 11/8/2019
4.7.0-alpha0004 1,134 9/2/2019
4.6.0 196,929 9/2/2019
4.6.0-beta0001 534 9/1/2019
4.6.0-alpha0036 518 9/1/2019
4.6.0-alpha0034 507 9/1/2019
4.6.0-alpha0033 503 9/1/2019
4.6.0-alpha0028 591 7/13/2019
4.6.0-alpha0026 537 7/13/2019
4.6.0-alpha0024 516 7/6/2019
4.6.0-alpha0022 514 7/6/2019
4.6.0-alpha0018 516 7/6/2019
4.6.0-alpha0008 671 5/8/2019
4.6.0-alpha0005 537 5/8/2019
4.6.0-alpha0003 566 5/8/2019
4.6.0-alpha0001 696 3/10/2019
4.5.1 169,592 5/8/2019
4.5.1-beta0001 565 5/8/2019
4.5.0 109,363 3/9/2019
4.5.0-beta0001 569 3/9/2019
4.5.0-alpha0008 541 3/9/2019
4.5.0-alpha0007 562 3/8/2019
4.5.0-alpha0005 581 2/25/2019
4.5.0-alpha0003 816 2/11/2019
4.5.0-alpha0002 636 1/28/2019
4.5.0-alpha0001 651 1/27/2019
4.4.0 99,925 1/27/2019
4.4.0-beta0001 683 1/27/2019
4.4.0-alpha0014 1,020 9/29/2018
4.4.0-alpha0013 733 9/29/2018
4.4.0-alpha0012 723 9/29/2018
4.4.0-alpha0002 785 9/23/2018
4.4.0-alpha0001 744 9/19/2018
4.3.0 151,155 9/29/2018
4.3.0-beta0001 751 9/26/2018
4.3.0-alpha0008 1,365 7/11/2018
4.3.0-alpha0007 929 7/7/2018
4.3.0-alpha0006 922 7/7/2018
4.3.0-alpha0005 931 7/1/2018
4.2.0 40,250 7/1/2018
4.2.0-beta0001 907 6/30/2018
4.2.0-alpha0004 897 7/1/2018
4.2.0-alpha0003 1,327 5/13/2018
4.2.0-alpha0002 954 5/13/2018
4.2.0-alpha0001 961 5/13/2018
4.1.2 1,200 6/30/2018
4.1.1 58,355 5/13/2018
4.1.0-beta0004 962 5/13/2018
4.1.0-beta0001 974 5/13/2018
4.1.0-alpha0016 1,280 4/14/2018
4.0.0 63,550 1/14/2018
4.0.0-beta0007 1,073 1/14/2018
4.0.0-beta0006 972 1/13/2018
4.0.0-beta0001 935 1/13/2018
3.5.0 90,768 4/14/2018
3.5.0-unstable0012 1,082 1/5/2018
3.5.0-unstable0010 1,371 8/15/2017
3.5.0-unstable0004 918 8/1/2017
3.5.0-unstable0003 928 7/25/2017
3.5.0-unstable0002 961 6/21/2017
3.5.0-unstable0001 1,010 6/15/2017
3.5.0-beta0001 1,137 4/14/2018
3.4.0 114,895 5/5/2017
3.4.0-unstable0009 944 4/5/2017
3.4.0-unstable0008 937 4/5/2017
3.4.0-unstable0007 965 4/5/2017
3.4.0-unstable0006 927 4/5/2017
3.4.0-unstable0004 1,039 2/15/2017
3.4.0-unstable0001 1,032 12/4/2016
3.4.0-ci0000 918 4/5/2017
3.3.0 70,276 11/1/2016
3.3.0-unstable0001 1,041 11/1/2016
3.3.0-unstable0000 936 10/10/2016
3.2.0 7,687 10/10/2016
3.2.0-beta0001 944 10/10/2016
3.1.0 55,182 8/25/2016
3.1.0-unstable0022 925 10/9/2016
3.1.0-unstable0021 944 10/9/2016
3.0.0-unstable0020 1,049 7/17/2016
3.0.0-unstable0017 1,015 8/24/2016
3.0.0-unstable0013 976 7/17/2016
3.0.0-unstable0012 988 7/17/2016
3.0.0-unstable0011 978 7/17/2016
3.0.0-beta-1 1,057 7/4/2016
3.0.0-alpha0014 935 7/20/2016
2.2.0-unstable0012 1,025 7/19/2016
2.1.1 18,232 7/16/2016
2.1.0 37,335 4/8/2016
2.0.0.1 1,601 4/6/2016
1.7.0 38,305 10/29/2015
1.6.0 3,099 10/25/2015
1.5.1 17,929 7/14/2015
1.5.0 1,317 7/14/2015
1.4.0 4,886 6/12/2015
1.3.0 16,472 2/1/2015
1.2.0 2,910 1/26/2015
1.1.1 5,956 11/15/2014
1.1.0 9,972 7/13/2014
1.0.0 2,618 7/2/2014
0.11.0 1,867 5/18/2014
0.10.0 1,756 4/9/2014
0.9.0 5,359 4/7/2014