Quartz.HostedService
1.0.0
dotnet add package Quartz.HostedService --version 1.0.0
NuGet\Install-Package Quartz.HostedService -Version 1.0.0
<PackageReference Include="Quartz.HostedService" Version="1.0.0" />
paket add Quartz.HostedService --version 1.0.0
#r "nuget: Quartz.HostedService, 1.0.0"
// Install Quartz.HostedService as a Cake Addin #addin nuget:?package=Quartz.HostedService&version=1.0.0 // Install Quartz.HostedService as a Cake Tool #tool nuget:?package=Quartz.HostedService&version=1.0.0
Quartz.HostedService
Use .Net Core Generic Service and Quartz to Implement Background Schedule Tasks.
How to use?
Create a console application. And install the package:
PM> Install-Package Quartz.HostedService
These packages may also need:
PM> Install-Package Microsoft.Extensions.Hosting
PM> Install-Package Microsoft.Extensions.Configuration.Json
PM> Install-Package Microsoft.Extensions.Logging.Console
PM> Install-Package Microsoft.Extensions.Logging.Debug
Edit the quartz configuration in the appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"quartz": {
"scheduler": {
"instanceName": "Quartz.HostedService.Sample"
},
"threadPool": {
"type": "Quartz.Simpl.SimpleThreadPool, Quartz",
"threadPriority": "Normal",
"threadCount": 10
},
"plugin": {
"jobInitializer": {
"type": "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz.Plugins",
"fileNames": "quartz_jobs.xml"
}
}
}
}
Write your job(s):
public class TestJob : IJob
{
private readonly ILogger _logger;
public TestJob(ILogger<TestJob> logger)
{
_logger = logger;
}
public Task Execute(IJobExecutionContext context)
{
_logger.LogInformation(string.Format("[{0:yyyy-MM-dd hh:mm:ss:ffffff}]Test job is running...", DateTime.Now));
return Task.CompletedTask;
}
}
Prepare the quartz_jobs.xml:
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0">
<processing-directives>
<overwrite-existing-data>true</overwrite-existing-data>
</processing-directives>
<schedule>
<job>
<name>TestJob</name>
<group>TestGroup</group>
<description>Test Job</description>
<job-type>Quartz.HostedService.Sample.TestJob, Quartz.HostedService.Sample</job-type>
<durable>true</durable>
<recover>false</recover>
</job>
<trigger>
<simple>
<name>TestTrigger</name>
<group>TestGroup</group>
<description>Test Trigger</description>
<job-name>TestJob</job-name>
<job-group>TestGroup</job-group>
<repeat-count>-1</repeat-count>
<repeat-interval>2000</repeat-interval>
</simple>
</trigger>
</schedule>
</job-scheduling-data>
Add generic host, register quartz hosted service and job(s) in the Program.cs:
static void Main()
{
var host = new HostBuilder()
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
})
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddJsonFile("appsettings.json", true);
})
.ConfigureServices((hostContext, services) =>
{
services.AddLogging();
services.AddQuartzHostedService(hostContext.Configuration);
services.AddSingleton<TestJob, TestJob>();
})
.ConfigureLogging((hostContext, configLogging) =>
{
configLogging.AddConsole();
configLogging.AddDebug();
})
.UseConsoleLifetime()
.Build();
host.Run();
}
For more details about generic host please refer:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.1
Your can also view or download the sample by
https://github.com/ErikXu/Quartz.HostedService/tree/master/src/Quartz.HostedService.Sample
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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.1 is compatible. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
-
.NETCoreApp 2.1
- Microsoft.Extensions.Configuration.Binder (>= 2.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 2.1.0)
- Microsoft.Extensions.Logging.Abstractions (>= 2.1.0)
- Microsoft.Extensions.Options (>= 2.1.0)
- Quartz (>= 3.0.5)
- Quartz.Plugins (>= 3.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 31,042 | 7/1/2018 |