首页 > 其他分享 >定时调度插件------Quartz.NET(一)

定时调度插件------Quartz.NET(一)

时间:2023-01-29 14:46:11浏览次数:58  
标签:插件 Quartz await 调度 ------ NET my logger

官网地址 https://www.quartz-scheduler.net/

使用说明

dll引用

  • 使用NuGet 搜索Quartz,作者为Marko Lahma, Quartz.NET为该插件

    目前最新的为3.5.0版本,.NET Core/netstandard 2.0 and .NET Framework 4.6.2以上

    2.6.2版本及以下无要求,3.0.0版本开始有最低版本

  • 直接下载源码编译即可

    当前使用版本为最新的3.5.0。

最小使用说明

共用类

//创建一个IJob的实现类
public class MyJob : IJob
{
   private readonly ILogger<MyJob> logger;
    public MyJob(ILogger<MyJob> logger)
    {
        this.logger = logger;
    }
    public async Task Execute(IJobExecutionContext context)
    {
    	await Task.Delay(1000, context.CancellationToken);
        logger.LogInformation("等待1秒");
    }
}

.netcore容器注入

/*
  如果需要提前注入的类可使用以下方法
    方法名				生命周期		说明
    AddSingleton	项目启动-项目关闭 	相当于静态类 有且只有一个
    AddTransient	请求开始-请求结束	对象都是同一个
    AddScoped		请求获取-主动释放	每次获取的都不同
*/
//Quartz调度中心
services.AddQuartz(q =>
{
    //使用默认的配置文件
    q.UseMicrosoftDependencyInjectionJobFactory();
    // 基本Quartz调度器、作业和触发器配置
    q.ScheduleJob<MyJob>(
    	// 触发器的配置设定
    	triggerConfigurator => triggerConfigurator
    		// 唯一表示
            .WithIdentity("myJobTrigger")
            // 马上执行一次
            .StartNow()
            // 间隔5s执行一次
            .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()),
        // 任务的配置设定
    	jobConfigurator => jobConfigurator
    		// 唯一标识
            .WithIdentity("myJob"));
});
// ASP.NET核心托管-添加Quartz服务
services.AddQuartzServer(options =>
{
    // 当程序关闭时,我们希望任务也随之关闭
    options.WaitForJobsToComplete = true;
});

.net framework4.6.2

// 创建调度工厂
ISchedulerFactory sf = new StdSchedulerFactory();
// 获得调度实例
IScheduler sched = await sf.GetScheduler();
// 获得当前时间的下一分钟
DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
// 创建任务
IJobDetail job = JobBuilder.Create<MyJob>()
	// 唯一标识
    .WithIdentity("my job", "my group")
    .Build();
// 定义触发器
ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("my trigger", "my group")
    // 触发时间
    .StartAt(runTime)
    .Build();
// 绑定任务和触发器
await sched.ScheduleJob(job, trigger);
// 开始调度
await sched.Start();
// 结束
await sched.Shutdown(true);

标签:插件,Quartz,await,调度,------,NET,my,logger
From: https://www.cnblogs.com/wanghun315/p/17072608.html

相关文章

  • stylelint.config.js
    module.exports={extends:['stylelint-config-standard-scss'],plugins:['stylelint-scss'],rules:{indentation:[2],'max-empty-lines':1,......
  • 力扣-82-删除排序链表中的重复元素Ⅱ
    这个删除重复不太常规的是:它不是删除多出来的剩下一个,而是比如有三个1,1重复了,那这三个1节点都不要 ListNode*deleteDuplicates(ListNode*head){ if(!head)returnh......
  • MybatisUtil 模板类
    由于SqlSessionFactory一般只需要创建一次,因此我们可以创建一个工具类来集中创建SqlSession,这样会更加方便一些:publicclassMybatisUtil{//在类加载时就进行创建......
  • httprunner框架
    '''一、httprunner命名规范类名以Test开头teststeps为测试步骤,每一个测试步骤叫做StepStep里的RunRequest,是待测的API名字;.py文件,必须以_test结尾二、httprunner......
  • mysql 管理员常用命令
    1、创建用户createuseradmin@localhostidentifiedby'password';2、赋权grantprivilegesONdatabase.tableTO'username'[@'host'][withgrantoption]gr......
  • 面试--Vue
    1.你对MVVM是怎么理解的?MVVM是Model-View-ViewModel缩写。Model层代表数据模型,View代表视图层,ViewModel是MVVM的核心,它是连接View和Model层的桥梁,数据会绑定到viewMod......
  • cscope
    https://blog.csdn.net/zhangxuechao_/article/details/52187877https://blog.csdn.net/zuiaikg703/article/details/17024519https://www.cnblogs.com/yuanfang/archive......
  • golang调用钉钉webhook发送消息
    golang使用dingtalk的webhook地址,发送消息通知此处用于记录golang调用dingtalkwebhook地址发送消息通知;一、使用http包自己拼接消息体,使用http包的post请求来......
  • 详解Tomcat类加载器
    目录Tomcat简介Tomcat类加载Tomcat的基本架构是什么?Tomcat请求的处理流程Tomcat简介Tomcat服务器Apache软件基金会项目中的一个核心项目,是一个免费开源的轻量级Web应......
  • 【设计模式】行为型
    职责链模式Client->A->B->C,避免请求发送者与接收者耦合,将接收者对象连接成一条链,直到有对象处理命令模式 将请求转换为一个包含与请求相关的所有信息的独立对象。 可......