当前位置: 首页 > news >正文

Quartz.Net_侦听触发器

简述

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

如何侦听

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());

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言典型例题59
  • python 并发100个请求
  • IoT客户端+联邦学习微调大模型
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
  • 【硬件知识】从零开始认识GPU
  • 【QT】学习笔记:导出资源中静态文件
  • JMeter 工具安装以及简单使用
  • 【网络安全】Bingbot索引投毒实现储存型XSS
  • 公司一般注册什么样的域名后缀?
  • 仿论坛项目--开发社区首页
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • 洛谷8.30
  • 盲盒小程序开发,探索市场发展优势
  • 基于 OpenCV 的数字图像处理实验平台设计
  • 自己开发完整项目一、登录功能-05(动态权限控制)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [case10]使用RSQL实现端到端的动态查询
  • 345-反转字符串中的元音字母
  • C++入门教程(10):for 语句
  • iOS | NSProxy
  • JS字符串转数字方法总结
  • leetcode388. Longest Absolute File Path
  • LeetCode算法系列_0891_子序列宽度之和
  • Otto开发初探——微服务依赖管理新利器
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • rabbitmq延迟消息示例
  • 二维平面内的碰撞检测【一】
  • 搞机器学习要哪些技能
  • 每天一个设计模式之命令模式
  • 学习笔记:对象,原型和继承(1)
  • 一、python与pycharm的安装
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​虚拟化系列介绍(十)
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #HarmonyOS:Web组件的使用
  • #QT(QCharts绘制曲线)
  • (0)Nginx 功能特性
  • (33)STM32——485实验笔记
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)nsfocus-绿盟科技笔试题目
  • (转)一些感悟
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • @Autowired标签与 @Resource标签 的区别
  • @Pointcut 使用
  • @RunWith注解作用