본문 바로가기

C#

[WorkerService] Quartz 사용하기

1. nuget package 설치 

Quartz 
Quartz.Extensions.Hosting

 

2. Test Job 생성 

 

// TestJob.cs

using Quartz;

namespace Test.WorkerService;

public class TestJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine("Welcome to .net 8.0");
    }
}

 

3. 잡, 트리거 등록 

// Program.cs

using Test.WorkerService;
using Quartz;

var builder = Host.CreateDefaultBuilder()
    .ConfigureServices((ctx, services) =>
    {
        services.AddQuartz(q =>
        {
            q.UseMicrosoftDependencyInjectionJobFactory(); 
            
        });
        services.AddQuartzHostedService(opt => opt.WaitForJobsToComplete = true);
    }).Build();


//스케쥴러 생성
var schedulerFactory = builder.Services
    .GetRequiredService<ISchedulerFactory>();

var scheduler = await schedulerFactory.GetScheduler();

//작업 생성
var job = JobBuilder.Create<TestJob>()
    .WithIdentity("TestJob")
    .Build();

 //트리거 생성
 var trigger = TriggerBuilder.Create()
     .ForJob("TestJob")
     .WithIdentity("TestJob-Trigger")
     .WithCronSchedule("0/10 * * * * ?") //10초에 한번씩 실행
     .Build();

await scheduler.ScheduleJob(job, trigger);


await builder.RunAsync();

 

 

 

'C#' 카테고리의 다른 글

Serilog 로그 설정  (0) 2024.05.19
[WorkerService] 윈도우 서비스 등록하기  (0) 2024.04.22
C# Supersocket  (0) 2023.08.14
C# 기본 이론 정리  (0) 2023.01.11