Quartz.框架的监听器和日志

1.JobListener  任务日志

新建一个类,继承IJobListener

  1. public class CustomJobListener : IJobListener
  2. {
  3. public string Name => "CustomJobListener";
  4.  
  5. /// <summary>
  6. /// 停止执行
  7. /// </summary>
  8. /// <param name="context"></param>
  9. /// <param name="cancellationToken"></param>
  10. /// <returns></returns>
  11. public async Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default)
  12. {
  13.  
  14. await Task.Run(()=> {
  15.  
  16. Console.WriteLine("停止执行");
  17. });
  18. }
  19. /// <summary>
  20. /// 待执行
  21. /// </summary>
  22. /// <param name="context"></param>
  23. /// <param name="cancellationToken"></param>
  24. /// <returns></returns>
  25. public async Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default)
  26. {
  27. await Task.Run(() => {
  28.  
  29. Console.WriteLine("待执行");
  30. });
  31. }
  32. /// <summary>
  33. /// 已执行
  34. /// </summary>
  35. /// <param name="context"></param>
  36. /// <param name="jobException"></param>
  37. /// <param name="cancellationToken"></param>
  38. /// <returns></returns>
  39. public async Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default)
  40. {
  41. await Task.Run(() => {
  42.  
  43. Console.WriteLine("已执行");
  44. });
  45. }
  46. }

添加到Scheduler 任务单元

  1. scheduler.ListenerManager.AddJobListener(new CustomJobListener());

2.TriggerListener 时间策略日志

新建一个类,继承ITriggerListener

  1. public class CustomTriggerListener : ITriggerListener
  2. {
  3. public string Name => "CustomTriggerListener";
  4.  
  5. /// <summary>
  6. /// 任务完成时触发
  7. /// </summary>
  8. /// <param name="trigger"></param>
  9. /// <param name="context"></param>
  10. /// <param name="triggerInstructionCode"></param>
  11. /// <param name="cancellationToken"></param>
  12. /// <returns></returns>
  13. public async Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default)
  14. {
  15. await Task.Run(() => {
  16.  
  17. Console.WriteLine("TriggerComplete");
  18. });
  19. }
  20. /// <summary>
  21. ///Trigger被激发 它关联的job即将被运行
  22. /// </summary>
  23. /// <param name="trigger"></param>
  24. /// <param name="context"></param>
  25. /// <param name="cancellationToken"></param>
  26. /// <returns></returns>
  27. public async Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default)
  28. {
  29. await Task.Run(() => {
  30.  
  31. Console.WriteLine("TriggerFired");
  32. });
  33. }
  34. /// <summary>
  35. /// 当Trigger错过被激发时执行,比如当前时间有很多触发器都需要执行,但是线程池中的有效线程都在工作,
  36. /// 那么有的触发器就有可能超时,错过这一轮的触发。
  37. /// </summary>
  38. /// <param name="trigger"></param>
  39. /// <param name="cancellationToken"></param>
  40. /// <returns></returns>
  41. public async Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default)
  42. {
  43. await Task.Run(()=> {
  44. Console.WriteLine("TriggerMisfired");
  45. });
  46. }
  47. /// <summary>
  48. /// 如果返回true 则取消任务, 返回false 则继续执行
  49. /// </summary>
  50. /// <param name="trigger"></param>
  51. /// <param name="context"></param>
  52. /// <param name="cancellationToken"></param>
  53. /// <returns></returns>
  54. public async Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default)
  55. {
  56. return true;
  57. }
  58. }

添加到Scheduler 任务单元

  1. scheduler.ListenerManager.AddJobListener(new CustomJobListener());

3.SchedulerListener

新建一个类,继承ISchedulerListener

  1. /// <summary>
  2. /// 监听一些 动作
  3. /// </summary>
  4. public class CustomSchedulerListener : ISchedulerListener
  5. {
  6. public async Task JobAdded(IJobDetail jobDetail, CancellationToken cancellationToken = default)
  7. {
  8. await Task.Run(() => {
  9.  
  10. Console.WriteLine($"{jobDetail.Key.Name} 添加进来了");
  11. });
  12. }
  13.  
  14. public async Task JobDeleted(JobKey jobKey, CancellationToken cancellationToken = default)
  15. {
  16. await Task.Run(() => {
  17.  
  18. Console.WriteLine($"{jobKey.Name} 删除了");
  19. });
  20. }
  21.  
  22. public Task JobInterrupted(JobKey jobKey, CancellationToken cancellationToken = default)
  23. {
  24. throw new NotImplementedException();
  25. }
  26.  
  27. public Task JobPaused(JobKey jobKey, CancellationToken cancellationToken = default)
  28. {
  29. throw new NotImplementedException();
  30. }
  31.  
  32. public Task JobResumed(JobKey jobKey, CancellationToken cancellationToken = default)
  33. {
  34. throw new NotImplementedException();
  35. }
  36.  
  37. public Task JobScheduled(ITrigger trigger, CancellationToken cancellationToken = default)
  38. {
  39. throw new NotImplementedException();
  40. }
  41.  
  42. public Task JobsPaused(string jobGroup, CancellationToken cancellationToken = default)
  43. {
  44. throw new NotImplementedException();
  45. }
  46.  
  47. public Task JobsResumed(string jobGroup, CancellationToken cancellationToken = default)
  48. {
  49. throw new NotImplementedException();
  50. }
  51.  
  52. public Task JobUnscheduled(TriggerKey triggerKey, CancellationToken cancellationToken = default)
  53. {
  54. throw new NotImplementedException();
  55. }
  56.  
  57. public Task SchedulerError(string msg, SchedulerException cause, CancellationToken cancellationToken = default)
  58. {
  59. throw new NotImplementedException();
  60. }
  61.  
  62. public Task SchedulerInStandbyMode(CancellationToken cancellationToken = default)
  63. {
  64. throw new NotImplementedException();
  65. }
  66.  
  67. public Task SchedulerShutdown(CancellationToken cancellationToken = default)
  68. {
  69. throw new NotImplementedException();
  70. }
  71.  
  72. public Task SchedulerShuttingdown(CancellationToken cancellationToken = default)
  73. {
  74. throw new NotImplementedException();
  75. }
  76.  
  77. public Task SchedulerStarted(CancellationToken cancellationToken = default)
  78. {
  79. throw new NotImplementedException();
  80. }
  81.  
  82. public Task SchedulerStarting(CancellationToken cancellationToken = default)
  83. {
  84. throw new NotImplementedException();
  85. }
  86.  
  87. public Task SchedulingDataCleared(CancellationToken cancellationToken = default)
  88. {
  89. throw new NotImplementedException();
  90. }
  91.  
  92. public Task TriggerFinalized(ITrigger trigger, CancellationToken cancellationToken = default)
  93. {
  94. throw new NotImplementedException();
  95. }
  96.  
  97. public Task TriggerPaused(TriggerKey triggerKey, CancellationToken cancellationToken = default)
  98. {
  99. throw new NotImplementedException();
  100. }
  101.  
  102. public Task TriggerResumed(TriggerKey triggerKey, CancellationToken cancellationToken = default)
  103. {
  104. throw new NotImplementedException();
  105. }
  106.  
  107. public Task TriggersPaused(string triggerGroup, CancellationToken cancellationToken = default)
  108. {
  109. throw new NotImplementedException();
  110. }
  111.  
  112. public Task TriggersResumed(string triggerGroup, CancellationToken cancellationToken = default)
  113. {
  114. throw new NotImplementedException();
  115. }
  116. }

添加到Scheduler 任务单元

  1. scheduler.ListenerManager.AddSchedulerListener(new CustomSchedulerListener());

Quartz.Net 任务调度之日志(5)的更多相关文章

  1. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  2. Quartz实现任务调度

    一.任务调度概述 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作,任务调度涉及多线程并发. ...

  3. quartz.net任务调度:源码及使用文档

    目录: 1.quartz.net任务调度:源码及使用文档 2.quartz.net插件类库封装 前言 前段时间把自己封装quartz.net 类库的过程总结到博客园,有网友想要看一下源码,所以就把源码 ...

  4. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...

  5. 项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

    1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器, ...

  6. Java&Quartz实现任务调度

    目录 Java&Quartz实现任务调度 1.Quartz的作用 2.预备 3.Quartz核心 3.1.Job接口 3.2.JobDetail类 3.3 JobExecutionContex ...

  7. Quartz任务调度 服务日志+log4net打印日志+制作windows服务

    引言 现在许多的项目都需要定时的服务进行支撑,而我们经常用到的定时服务就是Quartz任务调度了.不过我们在使用定时Job进行获取的时候,有时候我们就需要记录一下自定义的日志,甚至我们还会对执行定时J ...

  8. ASP.NET MVC5 实现基于Quartz.NET任务调度

    工作之余.技术?.记是不可能记住的. 只有写点东西 才能维持得了生活这样子的.好早就像写一篇关于任务调度的文章.终究是太懒了 一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的 ...

  9. Quartz.net任务调度

    一.Quartz.net简介 Quartz.net是一个开源的任务调度框架,很多定时任务.调度任务都可以用这个框架,如定时日志等. 二.Quartz.net用途 定时给女朋友发送消息 女朋友生日的时候 ...

随机推荐

  1. JavaScript中的编码解码

    1.URI 统一资源标识符(URI)是一个用于标识某一互联网资源名称的字符串.,该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.Web上可用的每种资源 -HTML文档.图像 ...

  2. webpack对icon-font图片的处理

    一.对图片的处理 安装url-loader 然后再loaderli配置这样会把图片打包成base64格式 { test: /\.(gif|png|jpg)\??.*$/, loader: 'url-l ...

  3. 前端每日实战:33# 视频演示如何用纯 CSS 创作牛奶文字变换效果

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MGNWOm 可交互视频教程 此视频 ...

  4. 【丛林】HTML Table 表格浅谈(边框、隔行变色

    此例子已经包含本文大部分内容,请对照参考.查看代码 > 定义和用法 table标签定义 HTML 表格. 创建表格的四要素:table.tr.th.td <table> 整个表格以& ...

  5. soj#532 set p3175

    传送门 分析 代码 #include<bits/stdc++.h> using namespace std; ; <<],Ans; int n,m,N; inline int ...

  6. Python笔记(一)_基础

    数据类型和转换 整型.浮点型.字符串.布尔值 int() 整型转换 float() 浮点型转换 str() 字符串转换 运算符.操作符 算术运算符:+  -  *  /  %  //  ** 赋值运算 ...

  7. 箫声远(本人)的小站(为展示作品、简历,基于github pages)

    箫声远的个人前端小站在线地址

  8. Html5 学习笔记 --》css3 学习

    在开发任务中最好不要使用前缀 可以设置发散图形 圆形 方形等 边框图片效果: CSS3 变形效果: Css3 3D立体变形: css 设置 CSS3 过度效果: div:hover { backgro ...

  9. spring boot 尚桂谷学习笔记08 Docker ---Web

    ------Docker------ 简介:Docker是一个开元的应用容器引擎,性能非常高 已经安装好的软件打包成一个镜像放到服务器中运行镜像 MySQL容器,Redis容器...... Docke ...

  10. bat 需注意

    1. 注释 :: 注释内容,下一行不能是空行,必须是语句否则报错. goto blabla rem 注释内容,则无上述限制. goto blabla 2. if rem 1. 要注意左括号前的空格以及 ...