Quartz.Net

一、简单的Quartz程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
using Quartz.Listener;
using Quartz.Impl.Matchers;
using System.Threading;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //scheduler [10 +1 都开启了,只不过都是等待状态]
            var scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;
            //[start 会让 调度线程 启动,从jobstore中获取快要执行的trigger,然后获取trigger关联的job进行执行。]
            scheduler.Start();

            //job
            var job = JobBuilder.Create<JobTest>().Build();
            //trigger 
            var trigger = TriggerBuilder.Create().WithSimpleSchedule(x => x
                                                                        .WithIntervalInSeconds(1)//1s钟执行一次
                                                                        .RepeatForever()//重复执行
                                                                        .Build()).Build();
            
            //添加监听
            scheduler.ListenerManager.AddJobListener(new MyJobListener(), GroupMatcher<JobKey>.AnyGroup());

            //开始调度
            scheduler.ScheduleJob(job, trigger);
            Console.ReadLine();
        }

        //面向AOP
        public class MyJobListener : IJobListener
        {
            public string Name => "test";

            //job开始执行之前调用
            public async Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
            {
                Console.WriteLine("JobExecutionVetoed");
            }

            //job每次执行之后调用
            public async Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
            {
                Console.WriteLine("JobToBeExecuted");
            }

            //job执行结束之后调用
            public async Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default(CancellationToken))
            {
                Console.WriteLine("JobWasExecuted");
            }
        }
    }

    public class JobTest : IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            Console.WriteLine("asd");
        }
    }
}
demo

相关文章:

  • 2021-12-22
猜你喜欢
  • 2021-09-28
  • 2021-05-15
  • 2022-02-07
相关资源
相似解决方案