【Quartz】常用方法的使用方式(三)

简介: 前言    总结了一下quartz组件的一些常用方法,以备将来不时之需。哈哈,看着挺简单有些好是值得笔记一下的。好记性不如烂笔头吗? 代码部分:  方法类内容: public class ExamplesGo { static ISchedulerFact...

前言

   总结了一下quartz组件的一些常用方法,以备将来不时之需。哈哈,看着挺简单有些好是值得笔记一下的。好记性不如烂笔头吗?

代码部分:

 方法类内容:

 public class ExamplesGo
    {
        static ISchedulerFactory schedFact = new StdSchedulerFactory();
        public static IScheduler sched = schedFact.GetScheduler();

    }
View Code

任务触发器分离实现:

    #region 1.运行任务【所有】
        /// 
        /// 运行任务
        /// 
        public void Run()
        {
            if (sched != null)
                sched.Start();
        }
        #endregion

        #region 2.添加job
        /// 
        /// 添加job
        /// 
        public void AddJob()
        {
            IJobDetail job = JobBuilder.Create()
                            .WithIdentity("HelloJob", "group1")
                            .StoreDurably()
                            .Build();
            sched.AddJob(job, true);
        }
        #endregion

        #region 3.添加触发器
        /// 
        /// 添加触发器
        /// 
        /// 
需要添加触发器的job public void AddTrigger(IJobDetail job) { ITrigger trigger = TriggerBuilder.Create() .WithIdentity( " myTrigger ", " group1 " ) .WithCronSchedule( " 0/5 * * * * ? ") // 5秒执行一次 .ForJob(job) .Build(); sched.ScheduleJob(trigger); } public void AddTrigger1(IJobDetail job) { ITrigger trigger = TriggerBuilder.Create() .WithIdentity( " myTrigger2 ", " group1 " ) .WithCronSchedule( " 0/1 * * * * ? ") // 5秒执行一次 .ForJob(job) .Build(); sched.ScheduleJob(trigger); } #endregion #region 4.根据key返回Job /// /// 根据key返回Job /// /// 需要查找的job名称 /// public IJobDetail GetJob( string jobName) { JobKey jobKey = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault(); return sched.GetJobDetail(jobKey); } #endregion View Code

基本的暂停,恢复,删除:

   #region 5.暂停任务[全部暂停]
        /// 
        /// 暂停任务
        /// 
        public void PauseAll()
        {
            if (sched != null)
                sched.PauseAll();
        }
        #endregion

        #region 6.暂停任务【单个任务】
        /// 
        /// 暂停任务
        /// 
        /// 
需要暂停任务的名称 public void Shutdown( string jobName) { if (sched != null ) { JobKey jobKey = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault(); sched.PauseJob(jobKey); } } #endregion #region 7.恢复当前任务 /// /// 恢复当前任务 /// /// 需要恢复任务的名称 public void ResumeJob( string jobName) { if (sched != null ) { JobKey jobKey = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault(); sched.ResumeJob(jobKey); } } #endregion #region 8.恢复所有任务 /// /// 恢复所有任务 /// public void ResumeJobAll() { if (sched != null ) { sched.ResumeAll(); } } #endregion #region 9.删除当前任务 /// /// 删除当前任务 /// /// 删除任务名称 public void DeleteJob( string jobName) { if (sched != null ) { JobKey jobKey = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault(); sched.DeleteJob(jobKey); } } #endregion #region 10.删除所有任务 /// /// 删除所有任务 /// public void DeleteJobAll() { if (sched != null ) { sched.Clear(); } } #endregion View Code

最后一些复杂点的查询:

 #region 11.返回所有任务键
        /// 
        /// 返回所有任务键
        /// 
        /// 
        public List GetJobAll()
        {
            //获取所有job
            List jobKeys = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList();
            return jobKeys;
        }
        #endregion

        #region 12.返回所有的触发器
        /// 
        /// 返回所有的触发器
        /// 
        /// 
        public List GetTrigAll()
        {
            List trigKeys = sched.GetTriggerKeys(GroupMatcher.AnyGroup()).ToList();
            return trigKeys;
        }
        #endregion

        #region 13.返回job对应的trigger
        /// 
        /// 返回job对应的trigger
        /// 
        /// 
任务名称 /// public List GetJobToTrig( string jobName) { JobKey jobKey = sched.GetJobKeys(GroupMatcher.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault(); List triggerList = sched.GetTriggersOfJob(jobKey).ToList(); return triggerList; } #endregion View Code

最后添加的两个一个关闭组件和修改触发器:

 #region 14.关闭所有任务
        /// 
        /// 关闭所有任务
        /// 
        public void Shutdown()
        {
            if (sched != null)
                sched.Shutdown();
        }
        #endregion

        #region 15.修改任务触发器
        public void ModiyTrig()
        {
            ITrigger trigger = TriggerBuilder.Create()
               .WithIdentity("myTrigger", "group1")
                // .StartAt(runTime)
                .WithCronSchedule("0/10 * * * * ?")     //10秒执行一次
               .Build();
            sched.RescheduleJob(trigger.Key, trigger);
            sched.Start();
        }
        #endregion
View Code

 

作者:YanBigFeg —— 颜秉锋

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

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

目录
打赏
0
0
0
0
2
分享
相关文章
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
88 4
|
8月前
|
Java 对象创建与使用:你真的会用吗?
【6月更文挑战第15天】在Java中,对象创建涉及`new`关键字和构造器,用于初始化。使用对象时注重属性和方法的访问,遵循命名规范。关注对象生命周期,避免过度创建,如在循环内,以减少内存消耗和提高性能。还要考虑线程安全,尤其在多线程环境下,确保正确同步以防止数据不一致。通过优化对象的创建与使用,提升代码效率和可靠性。
64 0
|
9月前
|
Java类 初始化顺序 | 静态数据的初始化
Java类 初始化顺序 | 静态数据的初始化
25 0
Quartz-JobDataMap 参数传递
Quartz-JobDataMap 参数传递
290 0
Java用相同的方法在一个类中实现两个接口哪种接口方法被覆盖?
Java用相同的方法在一个类中实现两个接口哪种接口方法被覆盖?
140 0
创建一个简单的类来理解下 Java 中类的定义
创建一个简单的类来理解下 Java 中类的定义
110 0
这种方式整合Quartz你见过吗?
`Quartz`是一款优秀的任务调度框架,支持内存、JDBC的形式来存储未执行的任务列表,支持多个任务节点同时执行任务,支持任务漂移到不同的节点执行。
Java——三大特性之一:继承(概念理解+应用举例)
Java——三大特性之一:继承(概念理解+应用举例)
Java——三大特性之一:继承(概念理解+应用举例)

热门文章

最新文章