Quartz.net 2.x 학습 노트 01
20893 단어 quartz
Quartz.net 프로젝트 주소:http://www.quartz-scheduler.net/
공식 2.x 튜 토리 얼:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html
Quartz.net 2.x.net 에서 의 사용
Quartz.net 라 는 소개 와 다운로드 가 인터넷 에 많이 올 라 왔 다.Quartz.net 은 우리 가 평소에 말 하 는 정시 임 무 를 처리 하 는 데 사용 되 는 오픈 소스 입 니 다.마치 프로그램 이 특정한 시간 에 일 을 하 게 하고 싶 은 것 과 같 습 니 다(예 를 들 어 매일 저녁 0 시 에 정기 적 으로 지도자 에 게 데이터 메 일 을 보 냅 니 다).
우선 콘 솔 프로그램 을 새로 만 듭 니 다:
두 번 째 단 계 는 Quartz.net 의 인용 을 추가 합 니 다(다음 2 가지 방식 이 있 습 니 다).
1.Quartz.net 의 인용 은 dll 자체 인용 을 다운로드 할 수 있 습 니 다. 커 먼 로 깅 과 함께)
2.NuGet 을 직접 사용 하여 인용 추가
http://www.quartz-scheduler.net/
검색 소 에 quartz.net 검색 설 치 를 입력 하면 됩 니 다(현재 2.3)
위의 그림 과 같이 Common.Logging 에 의존 하 는 항목 이 있 습 니 다.설치 할 때 Common.Logging 도 자동 으로 설치 되 므 로 NuGet 참조 방식 을 사용 하 는 것 을 추천 합 니 다.
물론 NuGet 도 명령 으로 설치 할 수 있 습 니 다:Install-Package Quartz
시작 하기 전에 Quartz.net 설정(Configuration)
몇 가지 방법 이 있어 요. (다음은 자신의 이해+번역:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html)
1.프로그램 에서 NameValueCollection 방식 으로 타이머 공장(scheduler)에 factory)매개 변수 제공
2.프로그램의 config 파일 에 quartz 설정 절 을 사용 합 니 다.
3.프로그램의 루트 디 렉 터 리 에 quartz.config 라 는 파일 을 사용 합 니 다.
세 가지 방식 은 사실 같 습 니 다.모두 키 값 이 맞 는 매개 변수 값 을 제공 합 니 다. (나중에 고치 기 편 하면 2 나 3 을 사용 하 는 것 을 권장 합 니 다)
예 를 들 어 quartz.config 를 사용 합 니 다. 다음 과 같은 대략적인 형식 을 볼 수 있 습 니 다.
quartz.scheduler.instanceName = MyScheduler quartz.threadPool.threadCount = 3 quartz.jobStore.type = Quartz.Simpl.RAMJobStore, Quartz
위 에서 간단하게 말 하면...
타이머 의 이름 은 MyScheduler 입 니 다.스 레 드 탱크 에 3 개의 스 레 드 를 할당 합 니 다.즉,최대 3 개의 작업 만 수행 할 수 있 습 니 다.세 번 째 설정 은 작업 의 저장 형식 입 니 다.기본 Quartz 의 모든 데이터(JobDetail,triggers)는 메모리 에 저장 되 어 있 기 때 문 입 니 다.위 에는 데이터베이스(quartz.net 의 소스 코드 를 다운로드 할 수 있 습 니 다.당신 은 그것 이 관련 된 건축 표를 제공 하 는 문 구 를 볼 수 있 습 니 다.그것 의 시 계 를 직접 사용 할 수 있 습 니 다.물론 설정 에 의 해 사용 할 수 있 습 니 다.-표 가 좀 많 고 현재 의 업무 가 그렇게 복잡 하지 않 습 니 다.만약 에 사용 하면 저 는 자신 이 시 계 를 만들어 저장 하 는 것 을 선택 할 것 입 니 다).
세 번 째,간단 한 미 션 을 시작 하 겠 습 니 다.
저 는 공식 튜 토리 얼 에 따라 콘 솔 의 Program.cs 를 다음 과 같은 코드 로 수정 합 니 다.
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
namespace Quartz001
{
class Program
{
static void Main(string[] args)
{
// Common.Logging
Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info };
try
{
// Scheduler
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
//
scheduler.Start();
Thread.Sleep(TimeSpan.FromSeconds(10));
//
scheduler.Shutdown();
Console.ReadKey();
}
catch (SchedulerException ex)
{
Console.WriteLine(ex);
}
}
}
}
F5 실행,출력
위 는 Quartz.net 의 가장 간단 한 오픈 과 닫 기 입 니 다.
퀘 스 트 를 추가 합 니 다.Quartz 의 퀘 스 트 도 간단 합 니 다.퀘 스 트 클래스 를 계승 하고 IJob 인 터 페 이 스 를 실현 하기 만 하면 됩 니 다.
오른쪽 클릭 콘 솔 프로그램 에 HelloJob.cs 클래스 추가
using Quartz;
namespace Quartz001
{
public class HelloJob:IJob
{
public void Execute(IJobExecutionContext context)
{
Console.WriteLine(" HelloJob ");
}
}
}
그리고 Program.cs 코드 를 수정 합 니 다.
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
namespace Quartz001
{
class Program
{
static void Main(string[] args)
{
// Common.Logging
Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info };
try
{
// Scheduler
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
//
scheduler.Start();
// JobBuilder HelloJob ( Job Key- )
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();
// --StartNow() , 10s,
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10)
.RepeatForever())
.Build();
// Quartz job
scheduler.ScheduleJob(job, trigger);
Thread.Sleep(TimeSpan.FromSeconds(60));
//
scheduler.Shutdown();
}
catch (SchedulerException ex)
{
Console.WriteLine(ex);
}
Console.WriteLine(" !");
Console.ReadKey();
}
}
}
실행 결과:
이때 간단 한 정시 임 무 를 완성 하 였 다.
job 퀘 스 트 에 서 는 JobDataMap 을 통 해 job 에 값 을 전달 할 수 있 습 니 다.
DumbJob.cs 작업 새로 만 들 기
using Quartz;
namespace Quartz001
{
public class DumbJob:IJob
{
public void Execute(IJobExecutionContext context)
{
JobKey key = context.JobDetail.Key;
JobDataMap dataMap = context.JobDetail.JobDataMap;
string jobSays = dataMap.GetString("jobSays");
float myFloatValue = dataMap.GetFloat("myFloatValue");
Console.Error.WriteLine("DumbJob :" + jobSays + " :" + myFloatValue);
}
}
}
Program.cs 파일 코드 수정
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
namespace Quartz001
{
class Program
{
static void Main(string[] args)
{
// Common.Logging
Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info };
try
{
// Scheduler
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
//
scheduler.Start();
// JobBuilder HelloJob ( Job Key- )
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();
// --StartNow() , 10s,
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10)
.RepeatForever())
.Build();
IJobDetail dumbJob = JobBuilder.Create<DumbJob>()
.WithIdentity("myJob", "dumbGroup")
.UsingJobData("jobSays", " DumbJob, !")
.UsingJobData("myFloatValue", 3.141f)
.Build();
//
//JobDataMap map = jobDetail.JobDataMap;
//map.Put("jobSays", " DumbJob, !");
ITrigger dumbTrigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x=>x.WithIntervalInSeconds(3).WithRepeatCount(3)) //3 , 3 ( , 4 )
.Build();
// Quartz job
scheduler.ScheduleJob(job, trigger);
scheduler.ScheduleJob(dumbJob, dumbTrigger);
Thread.Sleep(TimeSpan.FromSeconds(60));
//
scheduler.Shutdown();
}
catch (SchedulerException ex)
{
Console.WriteLine(ex);
}
Console.WriteLine(" !");
Console.ReadKey();
}
}
}
출력 결과:
학습 참고 자료:
원본 코드 다운로드
http://www.cnblogs.com/lzrabbit/archive/2012/04/13/2447609.html
http://www.cnblogs.com/Raymond-YYC/p/3975378.html
http://www.cnblogs.com/monian/p/3822980.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring 통합 Quartz의 간단한 구성 방법그러나 실제 업무에서 직접 그것을 사용하는 것은 매우 드물다.일반적으로spring-quartz 구성 요소를 사용하며, 직접 설정을 통해spring 프레임워크를 자동으로 조립합니다 다음은spring 프레임워크 통합qu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.