【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

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

目录
相关文章
|
4月前
|
Java Spring 容器
Java SpringBoot 中,动态执行 bean 对象中的方法
Java SpringBoot 中,动态执行 bean 对象中的方法
42 0
|
6月前
|
存储 XML Java
在 Java 中,Spring 框架提供了一种更加简单的方式来读取和存储对象
【6月更文挑战第18天】Java Spring 框架利用注解简化对象管理:@Component(及衍生注解@Service等)标注Bean类,自动注册到容器;@Autowired用于字段或方法,实现依赖注入,提升灵活性,减少XML配置。
35 2
|
7月前
|
Java Spring
springboot单类集中定义线程池
该内容是关于Spring中异步任务的配置和使用步骤。首先,在启动类添加`@EnableAsync`注解开启异步支持。然后,自定义线程池类`EventThreadPool`,设置核心和最大线程数、存活时间等参数。接着,将线程池bean注入到Spring中,如`@Bean("RewardThreadPool")`。最后,在需要异步执行的方法上使用`@Async`注解,例如在一个定时任务类中,使用`@Scheduled(cron = "...")`和`@Async`结合实现异步定时任务。
57 2
|
7月前
|
Java
【JAVA】自定义线程池工具类
【JAVA】自定义线程池工具类
238 0
|
Java 调度
【JavaEE】线程的创建及常见方法解析(Tread类)
【JavaEE】线程的创建及常见方法解析(Tread类)
|
Java 数据处理
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (一)
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (一)
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (一)
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (二)
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (二)
JAVA8 Spliterator 并行迭代器用法以及 自定义Spliterator (二)
|
编解码 安全 Java
Java通过jar包方式加载指定对象类教程以及源码分析
Java通过jar包方式加载指定对象类教程以及源码分析
581 0
Java通过jar包方式加载指定对象类教程以及源码分析
|
存储 Java 调度
这种方式整合Quartz你见过吗?
`Quartz`是一款优秀的任务调度框架,支持内存、JDBC的形式来存储未执行的任务列表,支持多个任务节点同时执行任务,支持任务漂移到不同的节点执行。
|
Java Spring
请举例说明如何在Spring中注入一个Java Collection?
请举例说明如何在Spring中注入一个Java Collection?
请举例说明如何在Spring中注入一个Java Collection?