Computer Science

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();