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

简介: 前言     通过昨天的努力终于算是了解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();
        }
        #endregion
        public 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

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

下面就是我的大致层次:

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

作者:YanBigFeg —— 颜秉锋

出处:http://www.cnblogs.com/yanbigfeg

本文版权归作者和博客园共有,欢迎转载,转载请标明出处。如果您觉得本篇博文对您有所收获,觉得小弟还算用心,请点击右下角的 [推荐],谢谢!

目录
相关文章
|
7月前
|
JavaScript API
接口的封装
接口的封装
|
JavaScript API
接口封装如何实现?
接口封装如何实现?
|
API 网络架构 开发者
RESTful 接口实现简明指南
在前后端分离的 Web 应用架构中,前端专注于页面,同时与后端进行数据交互;而后端则专注于提供 API 接口。在这样的结构下,REST 是一个很流行的前后端交互形式的约定。这只是一套约定,并不是某个技术标准,所以在实际的应用中,对器实现程度完全取决于后端开发者;一些号称 RESTful 的接口并没有那么RESTful。
3987 0
|
7月前
|
Java Apache
远程调用工具HttpClient工具类封装
java远程调用工具HttpClient工具类类封装
|
7月前
|
Java Spring
SpringBoot+async异步调用接口以及几个任务同时完成和异步接口实现和调用
SpringBoot+async异步调用接口以及几个任务同时完成和异步接口实现和调用
147 0
|
7月前
|
测试技术 API
(接口封装)
(接口封装)
98 0
|
SQL 缓存 Java
MyBatis源码-解读Executor的三个实现类之ReuseExecutor(重用执行器)
MyBatis源码-解读Executor的三个实现类之ReuseExecutor(重用执行器)
157 0
|
存储 Java 调度
这种方式整合Quartz你见过吗?
`Quartz`是一款优秀的任务调度框架,支持内存、JDBC的形式来存储未执行的任务列表,支持多个任务节点同时执行任务,支持任务漂移到不同的节点执行。
|
存储 API 调度
Quartz的重要接口API(二)
Quartz的重要接口API(二)
699 0
Quartz的重要接口API(二)
|
Java 应用服务中间件
【EJB学习笔记】——远程调用和本地调用
  EJB应用可以发布为远程调用和本地调用。   从字面意思来理解,远程调用就是客户端(调用的模块)和服务端(被调用的模块)“不在一起”,“相隔很远”;本地调用就是客户端(调用的模块)和服务端(被调用的模块)“在一起”,“相隔很近”。   实质就是,客户端与服务端的EJB对象不在同一个JVM进程中,就是远程调用;客户端与服务端的EJB对象在同一个JVM进程中,就是本地调用。