前言

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

代码部分:

方法类内容:

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

任务触发器分离实现:

    #region 1.运行任务【所有】
/// <summary>
/// 运行任务
/// </summary>
public void Run()
{
if (sched != null)
sched.Start();
}
#endregion #region 2.添加job
/// <summary>
/// 添加job
/// </summary>
public void AddJob()
{
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("HelloJob", "group1")
.StoreDurably()
.Build();
sched.AddJob(job, true);
}
#endregion #region 3.添加触发器
/// <summary>
/// 添加触发器
/// </summary>
/// <param name="job">需要添加触发器的job</param>
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
/// <summary>
/// 根据key返回Job
/// </summary>
/// <param name="jobName">需要查找的job名称</param>
/// <returns></returns>
public IJobDetail GetJob(string jobName)
{ JobKey jobKey = sched.GetJobKeys(GroupMatcher<JobKey>.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault();
return sched.GetJobDetail(jobKey);
}
#endregion

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

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

最后一些复杂点的查询:

 #region 11.返回所有任务键
/// <summary>
/// 返回所有任务键
/// </summary>
/// <returns></returns>
public List<JobKey> GetJobAll()
{
//获取所有job
List<JobKey> jobKeys = sched.GetJobKeys(GroupMatcher<JobKey>.AnyGroup()).ToList();
return jobKeys;
}
#endregion #region 12.返回所有的触发器
/// <summary>
/// 返回所有的触发器
/// </summary>
/// <returns></returns>
public List<TriggerKey> GetTrigAll()
{
List<TriggerKey> trigKeys = sched.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup()).ToList();
return trigKeys;
}
#endregion #region 13.返回job对应的trigger
/// <summary>
/// 返回job对应的trigger
/// </summary>
/// <param name="jobName">任务名称</param>
/// <returns></returns>
public List<ITrigger> GetJobToTrig(string jobName)
{
JobKey jobKey = sched.GetJobKeys(GroupMatcher<JobKey>.AnyGroup()).ToList().Where(b => b.Name == jobName).FirstOrDefault();
List<ITrigger> triggerList = sched.GetTriggersOfJob(jobKey).ToList();
return triggerList;
}
#endregion

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

 #region 14.关闭所有任务
/// <summary>
/// 关闭所有任务
/// </summary>
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

【Quartz】常用方法的使用方式(三)的更多相关文章

  1. 7. Callable 创建线程的方式三

    package com.gf.demo06; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionEx ...

  2. H5 67-清除浮动方式三

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Java线程的创建方式三:Callable(四)

    一.Java实现多线程的三种方式 方式一:继承Thread类: public class Test extends Thread { public static void main(String[] ...

  4. 正确停止线程的方式三 使用Thread类中的内置的中断标记位-----------不熟悉

    package charpter10; public class Processor implements Runnable { @Override public void run() { for ( ...

  5. Android MVP模式简单易懂的介绍方式 (三)

    Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 讲完M和P,接下来就要讲V了.View ...

  6. 八 Struts2访问Servlet的API方式三:接口注入

    Struts2访问Servlet的API方式三:接口注入 通过实现ServletRequestAware, ServletContextAware 接口,拿到Request.ServletContex ...

  7. Java之创建线程的方式三:实现Callable接口

    import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util ...

  8. Java之解决线程安全问题的方式三:Lock锁

    import java.util.concurrent.locks.ReentrantLock; /** * 解决线程安全问题的方式三:Lock锁 --- JDK5.0新增 * * 1. 面试题:sy ...

  9. 创建线程的方式三:实现Callable接口-----JDK5.0 新增

    package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...

  10. 创建执行线程方式三:实现Callable接口

    Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable, ...

随机推荐

  1. BAT Android工程师面试流程解析+还原最真实最完整的一线公司面试题

    尊重原创,转载请写明原文出处:http://blog.csdn.net/sk719887916/article/details/47040931 (skay) 求职和我们每个人息息相关,而求职也有门道 ...

  2. cuda中模板的使用

    模板是C++的一个重要特征,它可以让我们简化代码,同时使代码更整洁.CUDA中也支持模板,这给我们编写cuda程序带来了方便.不过cuda4.0之前和之后使用模板的方法不一样,这给我们带来了少许困难. ...

  3. XML 处理利器 : XStream

    XStream 概述      XStream 是一套简洁易用的开发类库,用于将Java对象序列化为XML或者将XML反序列化为JAVA对象,是JAVA对象和XML之间一个双向转换器. 举例     ...

  4. LayoutInflater和inflate的用法,有图有真相

    1.概述 有时候在我们的Activity中用到别的layout,并且要对其组件进行操作,比如: A.acyivity是获取网络数据的,对应布局文件为A.xml,然后需要把这个数据设置到B.xml的组件 ...

  5. Cocos2D中的ObjectAL简介

    Cocos2D包含ObjectAL音频库,可以回放音效和音乐. ObjectAL是一个建立在低级别OpenAL API上的库.OpenAL最擅长被用来播放短的音效(.wav,.caf,.aiff),并 ...

  6. android 数据重构(仿淘宝浏览记录,足迹)

    数据结构 ->数据重构 原因 处理这个数据的主要原因是,后台服务器返回的数据格式在ios那边因为其控件可以对数据进行分区显示,可以直接处理,而在android上我们显示控件就是listview, ...

  7. Linux网络设置(第二版) --Linux网络设置

    Linux网络设置 --网络配置文件与命令 个 附- 服务程序可以不使用固定端口,但是一般对外公开的WebServer不会改变端口,但是像SSH一般推荐更改,可以回避扫描 nmap [IP地址] #扫 ...

  8. Developing User Interfaces

      Developing a User Interface with ADF Faces Purpose This tutorial covers developing the user interf ...

  9. how tomcat works 读书笔记 八 载入器下

    载入类 我们看看之前的文章,这一节就从SimpleWrapper的loadServlet讲起. SimpleWrapper.java如下(省略了try catch及其他部分代码) public Ser ...

  10. unity C#更改系统默认鼠标指针

    最近项目需要替换鼠标的默认图标,实现的效果是初始状态为一种图标,点击鼠标左键要换成另一种图标,按网上通用的方法做了以后,隐藏鼠标指针,在指针的位置画一个图片就可以了,但不知道怎么回事,这种方法画的图标 ...