【Quartz】常用方法的使用方式(三)
前言
总结了一下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】常用方法的使用方式(三)的更多相关文章
- 7. Callable 创建线程的方式三
package com.gf.demo06; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionEx ...
- H5 67-清除浮动方式三
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java线程的创建方式三:Callable(四)
一.Java实现多线程的三种方式 方式一:继承Thread类: public class Test extends Thread { public static void main(String[] ...
- 正确停止线程的方式三 使用Thread类中的内置的中断标记位-----------不熟悉
package charpter10; public class Processor implements Runnable { @Override public void run() { for ( ...
- Android MVP模式简单易懂的介绍方式 (三)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 讲完M和P,接下来就要讲V了.View ...
- 八 Struts2访问Servlet的API方式三:接口注入
Struts2访问Servlet的API方式三:接口注入 通过实现ServletRequestAware, ServletContextAware 接口,拿到Request.ServletContex ...
- Java之创建线程的方式三:实现Callable接口
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util ...
- Java之解决线程安全问题的方式三:Lock锁
import java.util.concurrent.locks.ReentrantLock; /** * 解决线程安全问题的方式三:Lock锁 --- JDK5.0新增 * * 1. 面试题:sy ...
- 创建线程的方式三:实现Callable接口-----JDK5.0 新增
package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...
- 创建执行线程方式三:实现Callable接口
Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable, ...
随机推荐
- android 打造不同的Seekbar
最近项目需要用到双向的seekbar,网上找了好多野不能达到要求,偶然一次机会看到了大众点评的例子,然后我最他做了优化,并对常用的seekbar做了总结. 向上两张图: 比如双向seekbar pub ...
- SpriteBuilder中如何平均拉伸精灵帧动画的距离
首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标. ...
- Struts的取值与标签
首先,我们都知道,在struts2中有一个valuestack.里面存放的就是action里的属性.同时,还有一个stackcontext,里面放的是map形式的request/session/att ...
- 【48】java抽象类和接口的定义和区别
首先看看他们的区别: 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力. ...
- ZeroC Ice Ice Registry实现负载均衡
Registry介绍 对于多个IceBox集群该怎么负载均衡?以服务注册表Registry为依托的Service Locator组件,以及依赖其而诞生的强大的分分布式框架-IceGri ...
- android 资源文字ids的作用
ids.xml--为应用的相关资源提供唯一的资源id.id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name.这些值可 ...
- unix命令自我总结
三种参数类型 1⃣时间日期: cal times time 2⃣文字处理: ctl+v 输入控制字符 ${#str} str字符串长度 expr length $abc 同上 typeset -i x ...
- 关于linux内核驱动开发中Makefile编译的问题
obj-y:打个比方,我要编译的是hello.c这个文件,obj-y就会把hello.c或者hello.c编译生成的hello.s文件链接到内核中去. obj-m:打个比方,我要编译的是hello.c ...
- 熊猫猪新系统测试之一:Windows 10 技术预览版
话说本猫不用windows很多年了呀!不过看到微软最新的Windows10还是手痒了,想安装体验一把.于是第一时间下载,并做成usb引导安装镜像,在08年的老台式机上安装尝鲜鸟.下载ISO和安装方法这 ...
- 听晴明老师从头讲React Native(原价399)百度云下载 百度网盘
适用人群 能使用至少一门主流编程语言:有基本的面向对象的概念:最好有一些web相关的知识和概念. 课程概述 新颖.实用.详尽的ReactNative零基础课程,由国内权威的ReactNative中文网 ...