원본 : 작업 스케줄링 프레임 워크는 이제 오프 Quartz.NET- -01- 빠른 시작 - 제인의 책
머리말
당신은 작업을 수행하기 위해 적용 할 필요가? 오후 11:30 화요일에이 작업을 매일, 매주 또는 실행의 달 아마 마지막 날. 작업은 심각한 오류가 발생하면 응용 프로그램이 알고 그것을 실행하려고하는 그것의 실패를 수행 할 수있는 실행 중의 개입없이 자동으로 수행됩니다? 당신과 당신의 팀은 .NET 프로그래밍을 사용하고 있습니까? 당신은 예 답변이 질문의 경우에, 당신은 Quartz.NET 스케줄러를 사용해야합니다. Quartz.NET은 개발자에 따라 작업 시간 간격 (또는 일)을 예약 할 수 있습니다. 그것은 많은 관계를 구현하고 작업을 트리거뿐만 아니라 다른 트리거와 관련된 여러 작업에. 통합 Quartz.NET 응용 프로그램은 하나의 이벤트는 여러 작업을 결합 할 수 있습니다, 다른 이벤트에서 작업을 다시 사용할 수 있습니다.
Quartz.NET 프로필
Quartz.NET은 C #을 기반 .NetCore 순수 닷넷 라이브러리로 작성, 매우 인기있는 오픈 소스 자바 작업 스케줄링 프레임 워크입니다 석영 닷넷 버전. 이 프로젝트는 원래 자바 프로젝트에 많은 것을 빚지고있다. 이 항목은 업데이트 된 3.0 버전은 배울 블로거에 의해 사용되는 버전입니다. 공식 문서 .
Quartz.NET 빠른 시작
Quartz.NET 키 인터페이스 및 클래스
- IScheduler : - 주요 API는 스케줄러와 상호 작용합니다.
- IJob - 인터페이스 구성 요소는 스케줄러 구현에 의해 실행되도록합니다.
- IJobDetail - 작업의 인스턴스를 정의합니다.
- ITrigger - 작업을 주어진 계획의 이행을 정의하는 트리거.
- JobBuilder은 - 채용 정보의 예를 식별 / JobDetail의 인스턴스를 구축, 정의하는 데 사용.
- TriggerBuilder - / 빌드를 식별하는 데 사용되는 인스턴스를 트리거합니다.
샘플 응용 프로그램
using Quartz;
using Quartz.Impl;
using System;
namespace MGToastServer
{
class Program
{
static void Main(string[] args)
{
StartUpJobs.StartUp().GetAwaiter().GetResult();
Console.ReadKey();
}
}
public static class StartUpJobs
{
public static async Task StartUp()
{
try
{
//第一步:从工厂中获取Scheduler实例
NameValueCollection props = new NameValueCollection();
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler scheduler = await factory.GetScheduler();
//第二步:然后运行它
await scheduler.Start();
//第三步:定义作业并绑定到HelloJob类,HelloJob类继承IJob接口
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
//UsingJobData 可以用来传参数
.UsingJobData("appKey", "123456QWE")
.UsingJobData("appName", "小熊猫")
.UsingJobData("api", "https://www.baidu.com")
.Build();
//第四步:创建触发器。设定,每十秒执行一次作业。永远重复。
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1") //指定唯一标识,触发器名字,和组名字
//这对于将作业和触发器组织成“报告作业”和“维护作业”等类别非常有用。
//作业或触发器的键的名称部分在组内必须是唯一的
.StartNow() //从现在开始执行
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(10) //每十秒执行一次
.RepeatForever()) //永远重复
.Build();
//第五步:作业与触发器组合,安排任务
await scheduler.ScheduleJob(job, trigger);
//可以设置关闭该调度
//await Task.Delay(TimeSpan.FromSeconds(5));
//await scheduler.Shutdown();
}
catch (SchedulerException se)
{
Console.WriteLine(se);
}
}
}
public class HelloJob : IJob
{
private string appKey;
private string appName;
private string appApi;
public async Task Execute(IJobExecutionContext context)
{
JobKey jkey = context.JobDetail.Key;
TriggerKey tKey = context.Trigger.Key;
JobDataMap dataMap = context.MergedJobDataMap;
appKey = dataMap.GetString("appKey"); //通过键值获取数据
appName = dataMap.GetString("appName");
appApi = dataMap.GetString("api");
await Console.Error.WriteLineAsync("[" + DateTime.Now.ToLongTimeString() + "]" + "开始推送:\n" + "JobKey:" + jkey + "\nTriggerKey:" + tKey + "\nAppKey:" + appKey + " appName: " + appName + ", and AppAPI: " + appApi);
}
}
}
실험 결과
스크린 샷에 나타낸 바와 같이, 한 번에 10 초마다이 작업을 수행합니다. 그리고 당신은 들어오는 매개 변수가 나타날 수 있습니다.
파트 II
파트 II : 작업 모니터의 작업 스케줄링 프레임 워크 Quartz.NET-02-
감사
저자 : Replay923의
링크 : HTTPS : //www.jianshu.com/p/6ecdc0b15d34
출처 : 제인 책은
저자에 의해 저작권이 있습니다. 상업 무단 전재 저자 권한은 비상업적 무단 전재 소스를 표시하시기 바랍니다 문의하시기 바랍니다.