Quartz.NET的使用

Quartz.NET是一款功能齐全的开源作业调度框架,小至的应用程序,大到企业系统都可以适用。Quartz是作者James House用JAVA语言编写的,而Quartz.NET是从Quartz移植过来的C#版本。**

 private void SendKCQ() 
        {
            // 构造一个调度程序工厂
            ISchedulerFactory schedFact = new StdSchedulerFactory();

            // 得到一个调度器
            IScheduler sched = schedFact.GetScheduler();
            sched.Start();

            // 定义作业并将其绑定到HelloJob类
            IJobDetail job = JobBuilder.Create<SendKCoJob>()
                .WithIdentity("myJob", "group1")
                .Build();

           
            // 现在触发作业运行,然后每600秒触发一次
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("myTrigger", "group1")
               
                .WithSimpleSchedule(x => x
                    .WithIntervalInSeconds(60)
                    .RepeatForever())
                .Build();

            // 5.使用trigger规划执行任务job
            sched.ScheduleJob(job, trigger);
          

        }

1、有几个重要类和概念需要了解一下:

IScheduler - 与调度器交互的主要API. IJob -由执行任务实现的接口。 IJobDetail - 定义Job实例
ITrigger - 按照定义的时间让任务执行的组件. JobBuilder - 用于定义或者创建JobDetai
TriggerBuilder -用于定义或生成触发器实例

2、触发器类型   一共有4种:
WithCalendarIntervalSchedule
WithCronSchedule
WithDailyTimeIntervalSchedule
WithSimpleSchedule
 在项目中使用的是WithCronSchedule,因为cron表达式更加灵活、方便。

3、Quartz轮训任务,需要配置一个参数,这个参数来控制Job任务是否并行,默认情况是并发执行的,如果是采用顺序执行,才可以执行下一次的任务,配置如下:

情况如下:假设一个任务每5分钟执行一次,本次的任务还没有执行完,然后就到了下一次的执行的时间,这种情况是继续执行新开的任务,不会等待。

如果想等待本次任务执行完才可以执行下次任务可以添加[DisallowConcurrentExecution]标记

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值