Autofac.Extras.Quartz 10.0.0-alpha0006

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-alpha0006                
NuGet\Install-Package Autofac.Extras.Quartz -Version 10.0.0-alpha0006                
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-alpha0006" />                
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-alpha0006                
#r "nuget: Autofac.Extras.Quartz, 10.0.0-alpha0006"                
#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-alpha0006&prerelease

// Install Autofac.Extras.Quartz as a Cake Tool
#tool nuget:?package=Autofac.Extras.Quartz&version=10.0.0-alpha0006&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. 
.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 85,577 3/7/2024
10.0.0-alpha0007 109 3/5/2024
10.0.0-alpha0006 126 3/4/2024
9.0.0 184,372 3/27/2023
8.2.0 61,756 1/30/2023
8.2.0-alpha0001 184 1/30/2023
8.1.0 2,359 1/24/2023
8.1.0-alpha0003 209 12/22/2022
8.1.0-alpha0002 187 12/22/2022
8.0.0 137,798 6/3/2022
7.4.0-alpha0007 248 6/2/2022
7.4.0-alpha0005 8,444 5/17/2022
7.4.0-alpha0002 193 5/8/2022
7.3.0 184,039 10/28/2021
7.3.0-alpha0009 278 10/28/2021
7.2.0 48,647 8/2/2021
7.2.0-alpha0006 291 8/1/2021
7.1.0 65,300 4/25/2021
7.1.0-alpha0011 302 8/1/2021
7.1.0-alpha0010 335 8/1/2021
7.1.0-alpha0009 353 8/1/2021
7.1.0-alpha0008 302 6/20/2021
7.1.0-alpha0006 289 4/30/2021
7.1.0-alpha0004 299 4/24/2021
7.1.0-alpha0003 336 4/24/2021
7.1.0-alpha0002 288 4/19/2021
7.1.0-alpha0001 278 4/19/2021
7.0.0 189,439 2/16/2021
7.0.0-beta0001 291 2/14/2021
7.0.0-alpha0024 309 2/14/2021
7.0.0-alpha0023 312 2/9/2021
6.3.0-alpha0001 304 2/9/2021
6.2.0 13,897 1/29/2021
6.2.0-beta0001 296 1/29/2021
6.2.0-alpha0008 309 1/28/2021
6.2.0-alpha0001 427 1/10/2021
6.1.0 17,692 1/10/2021
6.1.0-beta0001 342 1/4/2021
6.0.1 43,985 10/21/2020
6.0.1-beta0001 447 10/21/2020
6.0.0 63,694 10/9/2020
6.0.0-beta0001 410 10/9/2020
6.0.0-alpha0041 419 10/7/2020
6.0.0-alpha0039 449 10/7/2020
5.4.0 37,395 10/7/2020
5.4.0-beta0001 414 10/4/2020
5.4.0-alpha0007 408 10/4/2020
5.4.0-alpha0001 632 8/6/2020
5.3.0 37,466 8/6/2020
5.3.0-beta0001 433 8/6/2020
5.3.0-alpha0009 443 8/6/2020
5.3.0-alpha0008 499 7/27/2020
5.3.0-alpha0007 511 7/8/2020
5.3.0-alpha0001 1,047 5/19/2020
5.2.0 105,038 5/19/2020
5.2.0-beta0001 473 5/19/2020
5.2.0-alpha0023 467 5/19/2020
5.2.0-alpha0021 746 2/17/2020
5.1.0 156,662 2/17/2020
5.1.0-alpha0015 466 2/17/2020
5.1.0-alpha0014 539 2/8/2020
5.1.0-alpha0005 544 1/30/2020
5.0.0 26,047 1/30/2020
5.0.0-beta0001 553 1/30/2020
5.0.0-alpha0064 478 1/30/2020
4.7.0-alpha0013 2,922 1/29/2020
4.7.0-alpha0009 500 1/27/2020
4.7.0-alpha0007 1,759 11/18/2019
4.7.0-alpha0006 498 11/17/2019
4.7.0-alpha0005 533 11/8/2019
4.7.0-alpha0004 1,151 9/2/2019
4.6.0 207,783 9/2/2019
4.6.0-beta0001 552 9/1/2019
4.6.0-alpha0036 541 9/1/2019
4.6.0-alpha0034 527 9/1/2019
4.6.0-alpha0033 520 9/1/2019
4.6.0-alpha0028 595 7/13/2019
4.6.0-alpha0026 553 7/13/2019
4.6.0-alpha0024 533 7/6/2019
4.6.0-alpha0022 530 7/6/2019
4.6.0-alpha0018 537 7/6/2019
4.6.0-alpha0008 675 5/8/2019
4.6.0-alpha0005 552 5/8/2019
4.6.0-alpha0003 583 5/8/2019
4.6.0-alpha0001 712 3/10/2019
4.5.1 173,859 5/8/2019
4.5.1-beta0001 584 5/8/2019
4.5.0 109,740 3/9/2019
4.5.0-beta0001 587 3/9/2019
4.5.0-alpha0008 557 3/9/2019
4.5.0-alpha0007 584 3/8/2019
4.5.0-alpha0005 610 2/25/2019
4.5.0-alpha0003 839 2/11/2019
4.5.0-alpha0002 659 1/28/2019
4.5.0-alpha0001 670 1/27/2019
4.4.0 103,749 1/27/2019
4.4.0-beta0001 702 1/27/2019
4.4.0-alpha0014 1,042 9/29/2018
4.4.0-alpha0013 760 9/29/2018
4.4.0-alpha0012 744 9/29/2018
4.4.0-alpha0002 821 9/23/2018
4.4.0-alpha0001 754 9/19/2018
4.3.0 153,614 9/29/2018
4.3.0-beta0001 792 9/26/2018
4.3.0-alpha0008 1,388 7/11/2018
4.3.0-alpha0007 952 7/7/2018
4.3.0-alpha0006 949 7/7/2018
4.3.0-alpha0005 958 7/1/2018
4.2.0 41,758 7/1/2018
4.2.0-beta0001 935 6/30/2018
4.2.0-alpha0004 933 7/1/2018
4.2.0-alpha0003 1,350 5/13/2018
4.2.0-alpha0002 979 5/13/2018
4.2.0-alpha0001 982 5/13/2018
4.1.2 1,232 6/30/2018
4.1.1 60,236 5/13/2018
4.1.0-beta0004 984 5/13/2018
4.1.0-beta0001 996 5/13/2018
4.1.0-alpha0016 1,316 4/14/2018
4.0.0 65,299 1/14/2018
4.0.0-beta0007 1,093 1/14/2018
4.0.0-beta0006 1,015 1/13/2018
4.0.0-beta0001 955 1/13/2018
3.5.0 96,921 4/14/2018
3.5.0-unstable0012 1,106 1/5/2018
3.5.0-unstable0010 1,391 8/15/2017
3.5.0-unstable0004 941 8/1/2017
3.5.0-unstable0003 952 7/25/2017
3.5.0-unstable0002 990 6/21/2017
3.5.0-unstable0001 1,038 6/15/2017
3.5.0-beta0001 1,158 4/14/2018
3.4.0 120,331 5/5/2017
3.4.0-unstable0009 993 4/5/2017
3.4.0-unstable0008 959 4/5/2017
3.4.0-unstable0007 986 4/5/2017
3.4.0-unstable0006 936 4/5/2017
3.4.0-unstable0004 1,066 2/15/2017
3.4.0-unstable0001 1,058 12/4/2016
3.4.0-ci0000 941 4/5/2017
3.3.0 72,082 11/1/2016
3.3.0-unstable0001 1,066 11/1/2016
3.3.0-unstable0000 957 10/10/2016
3.2.0 7,847 10/10/2016
3.2.0-beta0001 954 10/10/2016
3.1.0 56,370 8/25/2016
3.1.0-unstable0022 952 10/9/2016
3.1.0-unstable0021 987 10/9/2016
3.0.0-unstable0020 1,073 7/17/2016
3.0.0-unstable0017 1,035 8/24/2016
3.0.0-unstable0013 1,000 7/17/2016
3.0.0-unstable0012 1,009 7/17/2016
3.0.0-unstable0011 1,001 7/17/2016
3.0.0-beta-1 1,078 7/4/2016
3.0.0-alpha0014 957 7/20/2016
2.2.0-unstable0012 1,047 7/19/2016
2.1.1 18,864 7/16/2016
2.1.0 37,863 4/8/2016
2.0.0.1 1,624 4/6/2016
1.7.0 40,320 10/29/2015
1.6.0 3,172 10/25/2015
1.5.1 18,967 7/14/2015
1.5.0 1,344 7/14/2015
1.4.0 4,913 6/12/2015
1.3.0 16,761 2/1/2015
1.2.0 3,103 1/26/2015
1.1.1 6,180 11/15/2014
1.1.0 10,163 7/13/2014
1.0.0 2,713 7/2/2014
0.11.0 1,892 5/18/2014
0.10.0 1,781 4/9/2014
0.9.0 5,563 4/7/2014