Autofac.Extras.Quartz 10.0.0-alpha0006

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.

No packages depend on Autofac.Extras.Quartz.

https://github.com/alphacloud/Autofac.Extras.Quartz/milestone/29

.NET 6.0

.NET Standard 2.1

.NET Standard 2.0

.NET 8.0

.NET 7.0

Version Downloads Last updated
10.0.0 53 03/08/2024
10.0.0-alpha0007 43 03/08/2024
10.0.0-alpha0006 41 03/08/2024
9.0.0 56 05/23/2023
8.2.0 61 08/08/2023
8.2.0-alpha0001 48 08/15/2023
8.1.0 61 06/02/2023
8.1.0-alpha0003 54 04/26/2023
8.1.0-alpha0002 64 08/16/2023
8.0.0 75 07/28/2022
7.4.0-alpha0007 48 08/16/2023
7.4.0-alpha0005 54 05/26/2023
7.4.0-alpha0002 60 08/05/2023
7.3.0 55 11/11/2022
7.3.0-alpha0009 61 12/02/2022
7.2.0 60 02/21/2023
7.2.0-alpha0006 62 04/12/2023
7.1.0 52 05/31/2023
7.1.0-alpha0011 49 06/08/2023
7.1.0-alpha0010 52 08/15/2023
7.1.0-alpha0009 58 08/07/2023
7.1.0-alpha0008 69 06/06/2023
7.1.0-alpha0006 55 04/12/2023
7.1.0-alpha0004 51 08/16/2023
7.1.0-alpha0003 48 08/03/2023
7.1.0-alpha0002 62 10/10/2022
7.1.0-alpha0001 51 08/11/2023
7.0.0 69 07/06/2023
7.0.0-beta0001 54 05/03/2023
7.0.0-alpha0024 49 08/16/2023
7.0.0-alpha0023 49 10/05/2022
6.3.0-alpha0001 54 11/11/2022
6.2.0 62 06/02/2023
6.2.0-beta0001 42 08/15/2023
6.2.0-alpha0008 44 08/15/2023
6.2.0-alpha0001 50 11/06/2022
6.1.0 71 05/17/2023
6.1.0-beta0001 51 10/19/2022
6.0.1 70 10/28/2022
6.0.1-beta0001 48 08/08/2023
6.0.0 68 05/13/2023
6.0.0-beta0001 53 05/15/2023
6.0.0-alpha0041 46 08/20/2023
6.0.0-alpha0039 54 06/01/2023
5.4.0 54 11/25/2022
5.4.0-beta0001 51 09/24/2022
5.4.0-alpha0007 48 08/09/2023
5.4.0-alpha0001 51 10/14/2023
5.3.0 50 08/06/2023
5.3.0-beta0001 54 08/11/2023
5.3.0-alpha0009 55 06/12/2023
5.3.0-alpha0008 65 05/24/2023
5.3.0-alpha0007 54 05/28/2023
5.3.0-alpha0001 53 05/19/2023
5.2.0 48 08/16/2023
5.2.0-beta0001 61 08/07/2023
5.2.0-alpha0023 51 08/06/2023
5.2.0-alpha0021 52 08/12/2023
5.1.0 77 09/13/2022
5.1.0-alpha0015 53 06/06/2023
5.1.0-alpha0014 55 06/05/2023
5.1.0-alpha0005 46 05/07/2023
5.0.0 65 04/26/2023
5.0.0-beta0001 53 08/21/2023
5.0.0-alpha0064 52 08/22/2023
4.7.0-alpha0013 44 05/29/2023
4.7.0-alpha0009 43 08/11/2023
4.7.0-alpha0007 50 08/14/2023
4.7.0-alpha0006 52 12/06/2022
4.7.0-alpha0005 54 05/04/2023
4.7.0-alpha0004 65 09/28/2022
4.6.0 52 08/25/2022
4.6.0-beta0001 65 08/06/2023
4.6.0-alpha0036 60 08/03/2023
4.6.0-alpha0034 50 05/04/2023
4.6.0-alpha0033 51 08/03/2023
4.6.0-alpha0028 55 09/05/2023
4.6.0-alpha0026 61 09/24/2023
4.6.0-alpha0024 45 08/02/2023
4.6.0-alpha0022 43 07/29/2023
4.6.0-alpha0018 52 08/14/2023
4.6.0-alpha0008 50 06/16/2023
4.6.0-alpha0005 49 08/09/2023
4.6.0-alpha0003 49 06/04/2023
4.6.0-alpha0001 49 07/22/2023
4.5.1 78 05/03/2023
4.5.1-beta0001 47 05/03/2023
4.5.0 75 08/24/2023
4.5.0-beta0001 60 07/29/2023
4.5.0-alpha0008 48 08/24/2023
4.5.0-alpha0007 46 08/15/2023
4.5.0-alpha0005 52 05/19/2023
4.5.0-alpha0003 55 09/10/2022
4.5.0-alpha0002 47 08/16/2023
4.5.0-alpha0001 67 11/12/2022
4.4.0 57 10/12/2022
4.4.0-beta0001 54 09/25/2022
4.4.0-alpha0014 50 08/19/2023
4.4.0-alpha0013 51 11/26/2022
4.4.0-alpha0012 48 08/14/2023
4.4.0-alpha0002 67 07/14/2023
4.4.0-alpha0001 47 08/17/2023
4.3.0 75 10/23/2022
4.3.0-beta0001 51 10/20/2023
4.3.0-alpha0008 52 08/04/2023
4.3.0-alpha0007 46 08/10/2023
4.3.0-alpha0006 62 05/15/2023
4.3.0-alpha0005 49 05/30/2023
4.2.0 56 05/16/2023
4.2.0-beta0001 63 07/09/2023
4.2.0-alpha0004 50 11/10/2022
4.2.0-alpha0003 46 08/10/2023
4.2.0-alpha0002 45 08/18/2023
4.2.0-alpha0001 54 08/17/2023
4.1.2 56 08/21/2023
4.1.1 59 05/21/2023
4.1.0-beta0004 47 07/30/2023
4.1.0-beta0001 56 04/01/2023
4.1.0-alpha0016 47 08/17/2023
4.0.0 55 10/26/2022
4.0.0-beta0007 59 10/27/2022
4.0.0-beta0006 51 05/19/2023
4.0.0-beta0001 65 08/24/2023
3.5.0 70 05/08/2023
3.5.0-unstable0012 48 10/17/2022
3.5.0-unstable0010 58 08/15/2023
3.5.0-unstable0004 55 10/22/2022
3.5.0-unstable0003 69 04/28/2023
3.5.0-unstable0002 59 07/31/2023
3.5.0-unstable0001 63 06/21/2023
3.5.0-beta0001 55 08/21/2023
3.4.0 69 04/15/2023
3.4.0-unstable0009 61 05/25/2023
3.4.0-unstable0008 60 09/23/2023
3.4.0-unstable0007 52 08/06/2023
3.4.0-unstable0006 52 08/16/2023
3.4.0-unstable0004 58 08/08/2023
3.4.0-unstable0001 63 05/02/2023
3.4.0-ci0000 50 05/08/2023
3.3.0 50 08/05/2023
3.3.0-unstable0001 57 05/14/2023
3.3.0-unstable0000 49 08/11/2023
3.2.0 49 08/30/2022
3.2.0-beta0001 53 10/26/2022
3.1.0 57 08/29/2022
3.1.0-unstable0022 49 08/17/2023
3.1.0-unstable0021 48 08/18/2023
3.0.0-unstable0020 65 06/16/2023
3.0.0-unstable0017 59 08/25/2023
3.0.0-unstable0013 46 06/13/2023
3.0.0-unstable0012 50 04/27/2023
3.0.0-unstable0011 48 08/21/2023
3.0.0-beta-1 51 10/23/2022
3.0.0-alpha0014 63 08/22/2023
2.2.0-unstable0012 49 03/03/2023
2.1.1 48 08/12/2023
2.1.0 78 10/16/2022
2.0.0.1 71 11/12/2022
1.7.0 68 06/01/2023
1.6.0 49 08/11/2023
1.5.1 60 05/10/2023
1.5.0 77 08/15/2023
1.4.0 84 10/24/2022
1.3.0 60 08/11/2023
1.2.0 56 08/08/2023
1.1.1 56 08/11/2023
1.1.0 56 08/12/2023
1.0.0 45 05/09/2023
0.11.0 73 06/04/2023
0.10.0 47 06/07/2023
0.9.0 82 07/02/2023