작업 스케줄링 프레임 워크는 이제 오프 Quartz.NET- -01- 빠른 시작 - 제인의 책

원본 : 작업 스케줄링 프레임 워크는 이제 오프 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-

감사

Quartz.NET

장 Shanyou의 블로그



저자 : Replay923의
링크 : HTTPS : //www.jianshu.com/p/6ecdc0b15d34
출처 : 제인 책은
저자에 의해 저작권이 있습니다. 상업 무단 전재 저자 권한은 비상업적 무단 전재 소스를 표시하시기 바랍니다 문의하시기 바랍니다.

추천

출처www.cnblogs.com/lonelyxmas/p/11789938.html