quartz net
• Quartz.NET is an open source job scheduling library for .NET.
• It is used to run repetitive tasks (jobs) at specific times or intervals.
Example usage scenarios
• Email reminders
• Daily reports
• Background data cleansing jobs
Nuget Package
Install-Package Quartz
Basic Example Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
// Job tanımı
public class HelloJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine($"Quartz Job çalıştı: {DateTime.Now}");
return Task.CompletedTask;
}
}
var builder = WebApplication.CreateBuilder(args);
// Quartz servisini ekleme
builder.Services.AddQuartz(q =>
{
q.UseMicrosoftDependencyInjectionJobFactory();
// Job ve trigger tanımı
var jobKey = new JobKey("HelloJob");
q.AddJob<HelloJob>(opts => opts.WithIdentity(jobKey));
q.AddTrigger(opts => opts
.ForJob(jobKey)
.WithIdentity("HelloJob-trigger")
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(10) // 10 saniyede bir
.RepeatForever()));
});
// Quartz hosted service (arka planda çalıştır)
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
// Job tanımı
public class HelloJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine($"Quartz Job çalıştı: {DateTime.Now}");
return Task.CompletedTask;
}
}
var builder = WebApplication.CreateBuilder(args);
// Quartz servisini ekleme
builder.Services.AddQuartz(q =>
{
q.UseMicrosoftDependencyInjectionJobFactory();
// Job ve trigger tanımı
var jobKey = new JobKey("HelloJob");
q.AddJob<HelloJob>(opts => opts.WithIdentity(jobKey));
q.AddTrigger(opts => opts
.ForJob(jobKey)
.WithIdentity("HelloJob-trigger")
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(10) // 10 saniyede bir
.RepeatForever()));
});
// Quartz hosted service (arka planda çalıştır)
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();