一、实体及文件结构

public class JobSchedule
{public string Id { get; set; }public string Title { get; set; }public string Cron { get; set; }
}

二、服务类

后台服务类初始化时会调用此类的StartAsync方法

public class QuartzService : IQuartzService
{private readonly IScheduler _scheduler;public QuartzService(IJobFactory jobFactory) // 接收 IJobFactory{var schedulerFactory = new StdSchedulerFactory();_scheduler = schedulerFactory.GetScheduler().Result;// 设置自定义 JobFactory_scheduler.JobFactory = jobFactory;}public async Task StartAsync(){await _scheduler.Start();//模拟通过查库获得任务列表(实际可以通过注入IFreeSql等方式获取)List<JobSchedule> list = new List<JobSchedule>{new JobSchedule{Id = Guid.NewGuid().ToString(),Title = "每间隔3s打印一次时间",Cron = "0/3 * * * * ?"},new JobSchedule{Id = Guid.NewGuid().ToString(),Title = "每间隔15s打印一次时间",Cron = "0/15 * * * * ?"}};foreach (var jobSchedule in list){var job = JobBuilder.Create<PrintTimeJob>() // 使用泛型方式//.Create(Type.GetType("WebApplication1.Controllers.Quartz.PrintTimeJob")) //使用命名空间+类名方式.WithIdentity(jobSchedule.Id).UsingJobData("title", jobSchedule.Title)//传递参数到逻辑方法PrintTimeJob中.Build();var trigger = TriggerBuilder.Create().WithIdentity($"{jobSchedule.Id}.trigger").WithCronSchedule(jobSchedule.Cron).StartNow().Build();await _scheduler.ScheduleJob(job, trigger);}}public async Task StopAsync(){await _scheduler.Shutdown();}
}

三、后台服务类

初始化的关键在配置(Startup.cs)中

public class QuartzHostedService : IHostedService
{private readonly IQuartzService _quartzService;public QuartzHostedService(IQuartzService quartzService){_quartzService = quartzService;}public async Task StartAsync(CancellationToken cancellationToken){await _quartzService.StartAsync();}public async Task StopAsync(CancellationToken cancellationToken){await _quartzService.StopAsync();}
}

四、任务逻辑方法

实现IJob,会根据Cron表达式定时执行该方法(服务类已注册)

下面的注入IFreesql只是一个示例,表达的意思是可以查库

/// <summary>
/// 逻辑方法
/// </summary>
public class PrintTimeJob : IJob
{private readonly IFreeSql _freeSql;public PrintTimeJob(IFreeSql freeSql){_freeSql = freeSql;}public async Task Execute(IJobExecutionContext context){var q = await _freeSql.Ado.QueryAsync<string>("select id from city");var title = context.JobDetail.JobDataMap.GetString("title");Console.WriteLine($"{title}: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");await Task.CompletedTask;}
}


五、Startup.cs配置

public void ConfigureServices(IServiceCollection services)
{//省略其他不相关代码// 注册Quartz相关服务services.AddQuartz();//Quartz框架添加到依赖注入容器services.AddSingleton<IQuartzService, QuartzService>();//自己编写的服务类services.AddHostedService<QuartzHostedService>();//自己编写的后台服务类,初始化时会调用上面这个服务类
}

六、效果

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构栈的应用

1.栈的应用 后入先出的有序列表//无法进行小数、负数计算&#xff0c;除法计算为在除法步骤时舍弃小数部分public static void main(String[] args) {//双栈实现计算器功能,思路//1.定义数栈1、符号栈2、扫描指针index&#xff0c;从前往后扫描表达式序列//2.遇到数字&#xff…

npm 打包上传命令,撤销错误版本

添加npm用户账号npm adduser上传包命令npm publish撤销错误版本example&#xff1a;npm unpublish longze-guide0.1.0 --forcepackage.json example{"name": "longze-guide","version": "0.1.1","private": false,"des…

Python爬虫实战:研究Pyplot模块,构建IMDb数据采集和分析系统

1. 引言 1.1 研究背景 在大数据时代,互联网蕴含着海量有价值的信息,如何高效获取并分析这些信息成为各行各业的重要需求。网络爬虫作为一种自动化数据采集工具,能够按照预定规则从网页中提取所需信息,为数据分析提供基础数据支撑。而数据可视化则是将抽象数据转化为直观图…

算术逻辑运算指令 (汇编)

乘除运算指令MUL指令实现两个无符号操作数的乘法运算。乘数是OPRD&#xff0c;被乘数位于AL、AX或EAX中&#xff08;由OPRD的尺寸决定&#xff0c;乘数和被乘数的尺寸一致&#xff09;。乘积尺寸翻倍&#xff1a;16位乘积送到AX&#xff1b;32位乘积送DX:AX&#xff1b;64位乘积…

Agentless:革命性的无代理软件工程方案

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 01. 什么是Agentless&#xff1f; Agentless是由伊利诺伊大学香槟分校…

CVE Push Service | 高危漏洞实时情报自动化推送工具

工具介绍 &#x1f525; CVE Push Service | 自动化高危漏洞情报推送 ⚡ 面向网络安全从业者的 高危漏洞实时情报推送工具 自动拉取 NVD 最新漏洞数据&#xff0c;筛选 CVSS ≥ 7.0 的高危漏洞&#xff0c;并通过 Server酱3 第一时间推送到您的设备&#xff0c;帮助您在应急响…

SpringBoot的基础介绍,用法和配置

为什么会推出一款全新的SpringBoot&#xff1f;虽然Spring已经取得了非常大的成功&#xff0c;他的优点非常的多&#xff0c;将创建方法的权利给了Spring架构使我们程序员写代码更加的便利。但是Spring也有很多的缺点&#xff1a;配置麻烦&#xff0c;而且很多都是模板化的配置…

深度学习】--卷积神经网络

​​​​​​ 卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;是一种深度学习模型&#xff0c;特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示&#xff0c;以完成特定的任…

RK3588部署YOLOv8姿态估计

1. YOLOv8姿态估计与部署 姿态估计(Pose estimation)是一项涉及识别图像中关键点位置的任务。 关键点可以表示对象的各个部分&#xff0c;如关节、地标或其他独特特征,关键点的位置通常表示为一组2D[x, y]或3D[x, y, visible]坐标。 YOLOv8-Pose人体姿态估计,会先检测出图像中…

信创之-麒麟v10服务器安装tengine(已完成)

之前的文章太长了&#xff0c;所以单独写背景&#xff1a;java8springbootnginxredissqlserverwindows server2000目前java8已经更换&#xff0c;windows也已经更换&#xff0c;sqlserver也已经更换成dm8其实java的静态文件目录&#xff0c;可以很好处理前端网站了&#xff0c;…

Redis进阶(上)

Redis系统架构中各个处理模块是干什么的&#xff1f; Redis 系统架构 本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis 组件的系统架构如图所示&#xff0c;主…

【K8s】整体认识K8s之监控与升级/ETCD的备份和恢复/kustomization/CRD

metrics-server 先说一下metrics-server&#xff0c;这是一个聚合器&#xff0c;专门用来显示集群的资源使用情况&#xff0c;主要是内存和cpu。 安装 metrics-server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/comp…

【数据分享】多份土地利用矢量shp数据分享-澳门

而今天要说明数据就是多份土地利用矢量shp数据分享-澳门。数据介绍▲ 土地利用数据&#xff08;2025年&#xff09;▲土地利用数据&#xff08;2018年&#xff09;▲ 30m土地利用数据&#xff08;2023年&#xff09;▲ 公路铁路道路河流水系数据概况其他概况注&#xff1a;本文…

增强现实—Gated-attention architectures for task-oriented language grounding

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

CC攻击的技术分析与防御策略

CC攻击&#xff08;Challenge Collapsar Attack&#xff09;是一种针对Web应用的拒绝服务攻击方式&#xff0c;其主要通过模拟正常用户行为来消耗服务器资源。为了更好地理解这种攻击&#xff0c;让我们详细分析其技术原理及防御策略。CC攻击的技术原理CC攻击主要是通过发送大量…

【图论】分层图

一、分层图的核心思想 分层图是一种将图的不同状态拆分为多个“层”的建模方法&#xff0c;每层对应一种特定状态。通过这种方式&#xff0c;可以将复杂的状态转移问题转化为多层图中的最短路径问题。 核心特点&#xff1a; 层内边&#xff1a;表示普通操作&#xff08;如正常行…

当稳定币开始生息:USDT0 与 Berachain 的二次进化故事

如果说过去几年&#xff0c;稳定币是 DeFi 世界里最安稳的一块基石&#xff0c;那么 2025 年的 Berachain 正在把它们重新塑造成一种新的资产类型。在这条新兴的公链上&#xff0c;稳定币不再只是 “资金的搬运工”&#xff0c;而是摇身一变&#xff0c;成为能生息、能博弈、能…

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析 消息队列作为分布式系统中常见的异步解耦组件&#xff0c;在高并发场景下对可用性和性能提出了极高的要求。本文基于生产环境需求&#xff0c;深入分析 Kafka、RabbitMQ 与 RocketMQ 三大主流消息中间件在高…

深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录 一、HTTP 与 HTTPS 的基本概念 二、HTTP 与 HTTPS 的核心区别 三、为什么需要 HTTPS&#xff1f; 四、HTTPS 的加密通信原理&#xff08;核心&#xff09; 1. 客户端发起 HTTPS 请求 2. 服务端返回 SSL/TLS 证书 3. 客户端验证证书 4. 客户端生成对称密钥并用公钥…

零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?

AI 浪潮下的零售变革​在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的态势席卷全球&#xff0c;深刻地改变着各行各业的运营模式和发展轨迹&#xff0c;零售行业自然也难以置身事外。AI 技术凭借其强大的数据处理能力、精准的分析预测能力…