原文:【Quartz】实现接口封装化(二)

  前言  

通过昨天的努力终于算是了解Quartz这个定时器的简单使用,为了更深一步的了解和基于以后希望在项目中能使用他。所有我对他做了一下简单的封装操作,便于以后从新建立新工作和触发器,也方便写的代码不是那么的杂乱无章,所有就使用接口的方式进行了封装调用,算是个工厂模式的运用吧。哈哈。

  接口类(IExample):

废话就不多说了,想要实现简单就要有个统一的访问接口,然后让所有的任务去实现统一接口,这样我们只需要调用统一接口就知道了任务所包含的所有方法,管理也方便管理,添加任务只需要实现接口方法就可以了。听起来很单简哪。因为我是实现简单的例子所有我就实现了启动任务,返回当前调度器,暂停,修改四个方法:

public interface IExample{/// <summary>/// 启动当前任务/// </summary>/// <returns></returns>
        Task Run();/// <summary>/// 返回当前调度器/// </summary>/// <returns></returns>
        IScheduler GetScheduler();/// <summary>/// 暂停当前任务/// </summary>void Shutdown();/// <summary>/// 修改当前任务时间触发/// </summary>void ModiyTime();}

任务的继承:

还记得上一篇文章中我们的SimpleExample类吗?下面我们就首先让他继承IExample接口类:

    public class SimpleExample : BaseExample, IExample{#region 0.创建调度器public static ISchedulerFactory sf = new StdSchedulerFactory();public async Task<IScheduler> Ceart(){return await sf.GetScheduler();}#endregionpublic virtual async Task Run(){sched = await Ceart();//创建任务IJobDetail job = JobBuilder.Create<HelloJob>().WithIdentity("helloJob", "group1").Build();//创建触发器// DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);//定义触发规则ITrigger trigger = TriggerBuilder.Create().WithIdentity("trgTest", "group1")// .StartAt(runTime).WithCronSchedule("0/5 * * * * ?")     //5秒执行一次
                .Build();//将任务与触发器添加到调度器中await sched.ScheduleJob(job, trigger);//启动任务await sched.Start();}}

View Code

然后我又创建了很多工作组,你说什么没有 返回当前调度器,暂停,修改三个方法,没想到还是被你发现了。

父类实现:

由于在项目实际中我们回创建很多的任务组,任务不一样,但是基础方法都是通用的所有我们创建父类实现方法的公用。这样我们只需要注重我们的任务方法就行了。

    /// <summary>/// 扩展方法基类/// </summary>public class BaseExample{protected static  IScheduler sched = null;#region 1.返回当前调度器/// <summary>/// 返回当前调度器/// </summary>/// <returns></returns>public IScheduler GetScheduler(){return sched;}#endregion#region 2.暂停当前任务/// <summary>/// 暂停当前任务/// </summary>public void Shutdown(){if (sched != null){sched.Shutdown();}}#endregion#region 3.修改当前任务触发时间public void ModiyTime(){ITrigger trigger = TriggerBuilder.Create().WithIdentity("trg1", "group1")// .StartAt(runTime).WithCronSchedule("0/10 * * * * ?")     //10秒执行一次
               .Build();sched.RescheduleJob(trigger.Key, trigger);sched.Start();}#endregion}

View Code

这里创建好了之后,只需要在没添加一个任务继承此类即可实现了该类的方法,是不是这样看起来就简单多了。

下面就是我的大致层次:

写在这里也是给我一点记忆帮助,也为了刚接触的小伙伴能快速理解一下。东西不是很多也不很深很好理解。

【Quartz】实现接口封装化(二)相关推荐

  1. 快速封装一个二维码在线生成接口

    方法一:利用接口,生成二维码 这种方法生成的二维码最简单,你只需要调用别人提供的二维码生成接口,同时传递相应的参数即可. <?php /*** @author DengPeng <3@de ...

  2. 高德地图和百度地图接口封装遇到的问题(二):绘制带有方向箭头的折线

    临时接到一个小任务,要封装一个绘制带有方向箭头的折线的功能接口,就下面这种样式: 百度地图给的示例是这样的: var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BA ...

  3. jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)

    JeeWx-api 1.0.5 版本发布,微信SDK接口封装 1.jeewx-api为何诞生 现在微信越来越火,基于微信的公众号和服务号越来越丰富,虽然微信帮助文档已经提供了相关的接口,但是接口比较多 ...

  4. (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务...

    http://blog.csdn.net/zixiao217/article/details/53044890 读完第一节,我们已经对Quartz有了一个大体的认识,它可以定时帮我们执行一些处理程序, ...

  5. 微信支付接口调用之二维码失效时间的设置

    今天解决了测试提交上来的一个bug,说是公司网站调用的二维码接口没有做超时失效处理,这种情况容易导致用户账号登出后,该二维码还是有效的,当用户扫描支付时还是能够支付成功,但是微信支付成功后调用我们配置 ...

  6. 浅析 uniapp(Vue) 的接口封装方法

    浅析 uniapp(Vue) 的接口封装方法 本文将详细讲解封装思路,通过对接口请求进行封装,实现接口引入即用,减少了请求复杂的属性参数,更加关注数据与业务本身. config - 请求地址及相关参数 ...

  7. axios封装,api接口封装统一管理

    axios封装,api接口封装统一管理 一. axios说明 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. axios的封装和api接口的统一管理, ...

  8. 接口自动化测试-接口封装思想

    目录 一.接口测试封装思想 二.测试框架 三.架构管理 一.接口测试封装思想 配置--根据配置文件获取初始配置和依赖 接口封装--1.封装接口调动进行抽象封装 --2.类似PageObject效果 业 ...

  9. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作

    1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...

最新文章

  1. JQuery EasyUI的常用组件
  2. 【TensorFlow2.0】(1) tensor数据类型,类型转换
  3. 中文Visual Studio 2005 Express Beta2不能安装在英文Longhorn Beta1上吗?
  4. WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5...
  5. 实时视频传输中的BBR拥塞控制
  6. LeetCode 32. Longest Valid Parentheses
  7. 【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
  8. 数据结构与算法-常见时间复杂度
  9. .NET BackgroundWorker的一般使用方式
  10. java给文件添加水印_Java在PDF中添加水印(文本/图片水印)
  11. 2012/7/9Intel面试题目
  12. 酒店管理系统-概要设计报告
  13. 显示硬件发展与视频开发系列(4)----移动时代
  14. linux中rar文件包的解压方式
  15. 如何准备国家公务员考试
  16. linux学习杂碎:权限
  17. 2022-2023年华南师范大学工商管理硕士(MBA)招生简章
  18. OSPF——5种报文(图解)
  19. 程序猿赚的那点钱算个P啊!
  20. 【服务器数据恢复】服务器卷被误删除的raid5数据恢复案例

热门文章

  1. 匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔...
  2. vs2005 打sp1补丁失败的解决办法
  3. USB获取图像实时处理
  4. gitlab报错 fatal: index-pack failed error: RPC failed; result=18, HTTP code = 200解决方案
  5. Varnish 和 Squid比较到底强多少
  6. 快速开发一个PHP扩展
  7. asp.net 2.0 权限树的控制
  8. Ubuntu14.04上安装TensorRT 2.1操作步骤
  9. Microsoft Platform SDK Febrary 2003更新vc6的SDK网址
  10. 【SVN】svn“E155017工作副本的参考文件损坏、E200014文件校验和不匹配”的解决方法