[C# Quartz.NET] 스케줄링 작업 자동화 – 기본 사용법부터 실무 적용까지
C#에서 반복 작업이나 예약된 작업을 실행하려면
Quartz.NET을 사용하는 것이 가장 일반적입니다.
Quartz는 정해진 시간마다 특정 작업을 실행하거나,
복잡한 크론 표현식(Cron Expression)을 설정하여
정교한 스케줄링을 구현할 수 있는 라이브러리입니다.
✅ Quartz.NET 설치하기
// NuGet으로 설치
Install-Package Quartz
✅ 1. 기본 Job 클래스 만들기
// IJob을 상속한 작업 클래스
public class HelloJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine($"[{DateTime.Now}] Hello Quartz!");
return Task.CompletedTask;
}
}
Quartz는 실행할 작업을 IJob
인터페이스를 통해 정의합니다.
✅ 2. Scheduler 설정 및 Job 등록
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
await scheduler.Start();
// Job 생성
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("helloJob", "group1")
.Build();
// 트리거 설정 (5초마다 실행)
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("helloTrigger", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(5)
.RepeatForever())
.Build();
// 스케줄러에 Job과 Trigger 등록
await scheduler.ScheduleJob(job, trigger);
→ 위 예제는 프로그램이 실행되자마자 5초 간격으로 HelloJob을 반복 실행하는 구조입니다.
✅ 3. Cron 표현식으로 특정 시간에 실행
// 매일 오전 9시에 실행
ITrigger cronTrigger = TriggerBuilder.Create()
.WithIdentity("dailyTrigger", "group1")
.WithCronSchedule("0 0 9 ? * *") // 초 분 시 일 월 요일
.Build();
Cron 표현식을 사용하면 매주 특정 요일, 특정 시간에만 실행되도록 정밀하게 제어할 수 있습니다.
✅ 4. 실무 적용 팁
- 로그 파일 정리, 백업 작업, 메일 전송 등에 활용 가능
JobDataMap
을 통해 Job에 매개변수 전달 가능- 윈도우 서비스로 등록하면 항상 백그라운드에서 작동
// JobDataMap 사용 예시
IJobDetail job = JobBuilder.Create<EmailJob>()
.UsingJobData("recipient", "admin@example.com")
.Build();
✅ 5. ASP.NET Core에서 Quartz 사용하기
.NET Core에서는 Quartz.Extensions.Hosting 패키지를 사용하면 DI 기반으로 Quartz를 쉽게 등록하고 관리할 수 있습니다.
// 패키지 설치
Install-Package Quartz.Extensions.Hosting
// Program.cs
builder.Services.AddQuartz(q =>
{
q.UseMicrosoftDependencyInjectionJobFactory();
var jobKey = new JobKey("HelloJob");
q.AddJob<HelloJob>(opts => opts.WithIdentity(jobKey));
q.AddTrigger(opts => opts
.ForJob(jobKey)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()));
});
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
📌 마무리
Quartz.NET은 단순 반복 작업부터 복잡한 일정 작업까지
다양한 스케줄링을 안정적으로 처리할 수 있는 강력한 도구입니다.
C# 실무에서 백그라운드 작업 자동화, 주기적 로직 실행, 예약 시스템 등을 구성할 때
Quartz는 매우 유용하게 사용될 수 있습니다.
도움이 되셨다면 공감 / 댓글 부탁드립니다 😊
반응형
'프로그래밍 > C#' 카테고리의 다른 글
C# 단위 테스트를 위한 NuGet 패키지 추천 – 테스트 코드 품질 높이는 필수 도구 6가지 (0) | 2025.04.02 |
---|---|
NuGet 패키지 추천 – C# 개발 생산성 극대화하는 라이브러리 7선 (1) | 2025.03.31 |
[DevExpress] SplashScreenManager로 로딩 화면 만들기 – GridView 데이터 바인딩 UX 개선 (0) | 2025.03.24 |
[C#] Devexpress GridControl DataSource 지연 로딩으로 속도 최적화하기 (0) | 2025.03.24 |
[C#] DevExpress WinForms GridView 속도 개선 팁 – 렌더링 최적화 & 클릭 지연 해결 (0) | 2025.03.24 |