Quartz.Net_快速开始

news2024/9/21 10:29:31

简述

Quartz中主要分为三部分,JobDetail、Trigger、Scheduler,分别是任务、触发器、调度器,三者的关系为:Trigger控制JobDetail的执行时间和频率,而Scheduler负责将具体的Trigger与具体的JobDetail绑定

1.安装Quartz依赖

2.编写代码

①实现IJob接口与创建JobDetail

实现IJob接口

public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // context.ScheduledFireTimeUtc?.LocalDateTime 执行时间
        // context.NextFireTimeUtc?.LocalDateTime 下次执行时间
        Console.WriteLine($"任务执行:{DateTime.Now}");
        Console.WriteLine($"执行时间:{context.ScheduledFireTimeUtc?.LocalDateTime}");
        Console.WriteLine($"下次执行时间:{context.NextFireTimeUtc?.LocalDateTime}");
        await Task.CompletedTask;
    }
}

 创建JobDetail

public class JobDetailGetter
{
    public static IJobDetail GetJobDetail<T>(JobKey name) where T : IJob
    {
        return JobBuilder.Create<T>()
            .WithIdentity(name)
            .Build();
    }
}

Execute函数中的代码即为定时任务执行的操作

②创建Trigger

var triggerBuilder = TriggerBuilder.Create()
    //.StartNow()
    .StartAt(startTime)
    .EndAt(endTime)
    .WithSimpleSchedule(x => x
        .WithIntervalInSeconds(intervalInSeconds) // 设置时间间隔: 秒
        //.WithRepeatCount(10)                    // 设置间隔时长
        .RepeatForever());
public class TriggerGetter
{
    public static ITrigger GetSecondsTrigger(DateTimeOffset startTime, DateTimeOffset endTime, int intervalInSeconds)
    {
        // Trigger构造器
        var triggerBuilder = TriggerBuilder.Create()
            //.StartNow()
            .StartAt(startTime)
            .EndAt(endTime)
            .WithSimpleSchedule(x => x
                .WithIntervalInSeconds(intervalInSeconds) // 设置时间间隔: 秒
                //.WithRepeatCount(10)                      // 设置间隔时长
                .RepeatForever());

        // 构造并返回Trigger
        return triggerBuilder.Build();
    }
}

③创建Scheduler(建议使用单例封装)

public class SchedulerGetter
{
    // 由CLR保证: 在程序第一次使用该类之前被调用, 而且只调用一次
    private static readonly IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;
    public static async Task<IScheduler> GetSchedulerAsync()
    {
        return scheduler;
    }
}

3.测试

static async Task Main(string[] args)
{
    IScheduler scheduler = await SchedulerGetter.GetSchedulerAsync();

    var startTime = new DateTimeOffset(DateTime.Now);
    var endTime = new DateTimeOffset(DateTime.Now.AddSeconds(10));
    ITrigger trigger = TriggerGetter.GetSecondsTrigger(startTime, endTime, 3);

    IJobDetail jobDetail = JobDetailGetter.GetJobDetail<MyJob>(new JobKey("ABC"));

    await scheduler.ScheduleJob(jobDetail, trigger);

    Thread.Sleep(10000);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无需后端也能测试 CRUD:Mock.js 的强大功能

前言 在前端开发中&#xff0c;数据的增删改查&#xff08;CRUD&#xff09;操作是最常见的需求之一。 然而&#xff0c;在后端接口尚未就绪的情况下&#xff0c;前端开发者往往需要一种方法来模拟这些操作。 Mock.js 作为一个强大的前端数据模拟库&#xff0c;可以帮助开发…

Ubuntu 上启用 swap 内存,提高运行效率!

Ubuntu 24.04 是一个功能强大的操作系统&#xff0c;但有时你的电脑可能会在运行多个应用程序时耗尽内存。这会降低系统的运行速度和效率。在这种情况下&#xff0c;添加交换内存会有所帮助。交换内存作为一个额外的内存资源&#xff0c;您的计算机可以顺利处理更多的任务。 在…

如何用一次推送,毁掉一个公司?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;可以私有化部署&#xff0c;对中文的支持非常友好&#xff0c;是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0c;一键就能安装成功。安装详情可以查看官网指南。 本文分享如何使用极狐GitLab 17.2 发布的密钥…

这样的配置,才够格做“黑悟空”“天命人”

《黑神话&#xff1a;悟空》取材自中国古典名著《西游记》&#xff0c;玩家将扮演齐天大圣孙悟空&#xff0c;体验一段惊心动魄的冒险旅程&#xff0c;被媒体誉为中国首款“3A游戏”。 在《黑神话&#xff1a;悟空》发布并风靡全球之际&#xff0c;唯迈医疗的 Phoenix 210 亦同…

【渗透工具箱】灵兔宝盒-Rabbit_Treasure_Box_V1.0.1

Rabbit_Treasure_Box_V1.0.1 是一款基于Windows操作系统的渗透工具箱&#xff0c;旨在提供一个开箱即用的渗透测试工具集合。该工具箱通过 Dawn Launcher 进行管理&#xff0c;支持一键备份和更新。它包含了脚本类工具&#xff0c;在Windows中启动&#xff0c;集成了在线安全工…

Debug-026-el-upload照片上传-编辑页回显照片并且支持再上传的实现方案

前言&#xff1a; 在之前写的一篇文章《Debug-022-el-upload照片上传-整体实现回顾》中回顾了整体的借助el-upload实现了照片上传的功能。现在业务中增加了一项需求&#xff0c;我们的表单一般是分为“新增页”和“编辑页”的&#xff0c;这里新需求希望可以在编辑页中实现对“…

Java项目: 基于SpringBoot+mysql大学生入学审核系统(含源码+数据库+开题报告+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql大学生入学审核系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

PAT (Advanced Level) Practice——1008,1009

1008&#xff1a; 难度&#xff1a;简单 题意&#xff1a; 我们城市最高的建筑只有一部电梯。N个数字表示电梯将按指定顺序停在哪些楼层。电梯上一层需要 6 秒&#xff0c;下一层需要 4 秒。电梯将在每个站点停留 5 秒。对于给定的N个数字&#xff0c;您将计算完成这些请求所…

前后端分离项目遇到的跨域问题解决方案(后端为主)

文章目录 什么是跨域问题&#xff1f;第一种方式 ⇒ 注解解决方案&#xff1a;第二种方式 ⇒ 使用 CorsFilter 方法解决&#xff1a;第三种方式 ⇒ 实现 WebMvcConfigure 接口&#xff0c;添加映射&#xff08;个人推荐&#xff09; 什么是跨域问题&#xff1f; 先说问题&#…

【软件流程】项目开发管理制度(Doc文件)

项目开发管理总体流程 一、总则 二、阶段成果 三、岗位设置 四、项目立项 五、项目计划与监控 六、需求分析 七、总体设计 八、详细设计 九、项目实现 十、项目测试 十一、用户培训 十二、系统上线 十三、系统验收 十四、产品维护 十五、源码和文档 十六、质量检…

Gitee镜像关联GitHub仓库

申请 GitHub 私人令牌 GitHub 私人令牌用于授予 Gitee 读写 Github 仓库的权限。 1&#xff09;登录GitHub&#xff0c;通过 个人头像 > Settings > 下拉左侧菜单栏进入 Developer settings。 2&#xff09;Personal access tokens > Tokens(classic) > Generate …

[数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;94 标注数量(xml文件个数)&#xff1a;94 标注数量(txt文件个数)&#xff1a;94 标注类别数…

Spring Security 原理、源码解析及进阶

文章目录 参考文献 1、信息安全基础1. CIA 三要素2. Authentication Vs. Authorization3. RBAC模型 2、Spring Security1. Spring Security 简介2. Spring Security 架构核心2.1 FilterChain (Servlet)2.2 [DelegatingFilterProxy](https://docs.spring.io/spring-security/ref…

基于DPU与SmartNIC的K8s Service解决方案

1. 方案背景 1.1. Kubernetes Service介绍 Kubernetes Service是Kubernetes中的一个核心概念&#xff0c;它定义了一种抽象&#xff0c;用于表示一组提供相同功能的Pods&#xff08;容器组&#xff09;的逻辑集合&#xff0c;并提供了一种方式让这些Pods能够被系统内的其他组…

5、Django Admin后台移除“删除所选”操作

默认情况下&#xff0c;Django Admin后台的listview模型列表页&#xff0c;会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法&#xff0c;移除其中delete_selected方法…

uni-app 获取当前位置的经纬度以及地址信息

文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…

Easy-Paas 功能演示

1.登录 http://192.168.11.10:8100/web 账号&#xff1a;admin 密码&#xff1a;admin 2.主页

阿里巴巴商品搜索API返回值中的图片与详情链接

在使用阿里巴巴&#xff08;Alibaba&#xff09;的商品搜索API时&#xff0c;通常返回的JSON或其他格式的数据中会包含商品的相关信息&#xff0c;如标题、价格、图片链接、详情页链接等。这些链接&#xff08;特别是图片和详情页的链接&#xff09;通常设计为直接可用的URL&am…

buildroot构建根文件系统

目录 嵌入式系统1. Bootloader&#xff08;引导程序&#xff0c;如U-Boot&#xff09;2. Linux内核3. 根文件系统 根文件系统使用buildroot编译文件系统Buildroot目录简介选择配置文件Buildroot其他分析 嵌入式系统 嵌入式系统的三大部分&#xff1a;bootloader&#xff08;如…

Ceph RBD使用

CephRBD使用 一、RBD架构说明二、RBD相关操作1、创建存储池2、创建img镜像2.1 创建镜像2.1.2 查看镜像详细信息2.1.3 镜像其他特性2.1.4 镜像特性的启用和禁用 3、配置客户端使用RBD3.1 客户端配置yum源3.2 客户端使用admin用户挂载并使用RBD3.2.1 同步admin账号认证文件3.2.2 …