Quartz.Net_侦听触发器

embedded/2024/12/22 9:06:11/

简述

触发器执行任务时存在数个阶段,利用侦听器可以在对应的阶段执行一些代码

如何侦听

1.实现ITriggerListener接口,并实现其函数,具体说明见代码注释

public class DeleteAfterCompleted : ITriggerListener
{public string Name => "X";// 触发时public async Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default){await Console.Out.WriteLineAsync("TriggerFired");await Task.CompletedTask;}// 错过触发时public async Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default){await Console.Out.WriteLineAsync("TriggerMisfired");await Task.CompletedTask;}// 任务执行前public async Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default){await Console.Out.WriteLineAsync("VetoJobExecution");return await Task.FromResult(cancellationToken.IsCancellationRequested);}// 任务完成后public async Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default){await Console.Out.WriteLineAsync("TriggerComplete");var scheduler = await SchedulerGetter.GetSchedulerAsync();if (string.IsNullOrEmpty(context.NextFireTimeUtc?.LocalDateTime.ToString())){await scheduler.UnscheduleJob(trigger.Key);await Console.Out.WriteLineAsync("已删除");}}
}

2.为调度器添加侦听器

public class TriggerListenerGetter
{private static readonly DeleteAfterCompleted listener = new();public static ITriggerListener GetListener(){return listener;}
}
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
scheduler.ListenerManager.AddTriggerListener(TriggerListenerGetter.GetListener());

http://www.ppmy.cn/embedded/104670.html

相关文章

如何判断请求是否为跨域请求?——详细教程

判断请求是否为跨域请求&#xff0c;主要取决于浏览器的同源策略。同源策略定义了两个 URL 是否“同源”的标准&#xff0c;即它们的协议、主机和端口号必须完全相同。如果这些属性中的任何一个不同&#xff0c;那么请求就被认为是跨域请求。 具体判断标准 两个 URL 满足以下…

tomcat 调优

一、Tomcat 调优的关键领域 1. **连接数和线程池配置** 2. **JVM 配置和 GC 调优** 3. **Tomcat 内存调优** 4. **文件和网络配置** 5. **Tomcat 缓存和压缩设置** 二、连接数和线程池配置 Tomcat 的连接数和线程池配置对服务器的并发处理能力有直接影响。默认情况下&#x…

栈和队列+泛型

栈 也是System.Collections下的数据结构类&#xff0c;存储的也是Object类型的对象。 Stack 名字new Stack(); Count:实际拥有的元素个数&#xff1b; 栈的释放顺序是先进后出&#xff08;先进后出&#xff09; 压栈——Push(object 对象&#xff09;把这个对象添加到栈。…

解决线程中使用线程锁

问题&#xff1a;多线程操作同一个对象&#xff0c;利用锁保证数据操作的原子性 解决方案&#xff1a;使用线程锁 简要说明&#xff1a;线程锁本质上就是添加一个公共状态量&#xff0c;当线程拿到状态量后&#xff0c;则继续执行&#xff0c;否则就等待 扩展1&#xff1a;自…

随手记:小程序体积超出2M包大小如何优化

小程序的包体积限制是2M&#xff0c;超出包大小如何优化 先简单列出&#xff0c;最近比较忙&#xff0c;后续优化明细&#xff0c;有着急的先留言踢我 1.分包 2.图片放到服务器 3.大功能需求内嵌H5&#xff08;但分享会收到影响&#xff09; 4.代码压缩设置 5.删除多余代码

从0到DevOps(1)-初步了解DevOps和容器

DevOps从提出以来陆续成为行业普遍实践&#xff0c;目前是数字化生产普遍不可或缺的信息底座。本系列文章旨在系统性的阐述与认识DevOps, 了解企业实践里DevOps的实际面貌。 什么是DevOps? DevOps 是一套实践、工具和文化理念&#xff0c;为实现用户不断的软件功能和可用性要…

达梦数据库兼容Quartz定时框架

1、背景 近期项目中需要使用达梦数据库&#xff0c;现将mysql数据库切换为达梦数据库&#xff0c;其中兼容Quartz定时框架报错如下&#xff1a; 2、解决方案 2.1 起初配置完&#xff1a;达梦数据库驱动直接启动项目直接报错&#xff0c; 后面在yml中配置数据库表名前缀&…

Golang | Leetcode Golang题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; func canConstruct(ransomNote, magazine string) bool {if len(ransomNote) > len(magazine) {return false}cnt : [26]int{}for _, ch : range magazine {cnt[ch-a]}for _, ch : range ransomNote {cnt[ch-a]--if cnt[ch-a] < 0 {r…