Quartz.Net—基本操作
Quratz基本架构

Scheduler基本操作
/// <summary>
/// 调度器信息
/// </summary>
/// <returns></returns>
public async Task<SchedulerMetaData> GetSchedulerI
{
var mate = await schedu.GetMetaData();
var json = JsonConvert.SerializeObject(mate);
return mate;
} /// <summary>
/// 开始schedulequetzthread开始调度
/// </summary>
/// <returns></returns>
public async Task SchedulerStart()
{
if (!schedu.IsStarted)
{
await schedu.Start();
}
} /// <summary>
/// 关闭,关机。并清理关联的资源。
/// </summary>
/// <returns></returns>
public async Task SchedulerShutdown()
{
if (!schedu.IsShutdown)
{
await schedu.Shutdown();
}
} /// <summary>
/// 停止
/// </summary>
/// <returns></returns>
public async Task StopScheduler()
{
if (schedu.IsStarted)
{
await schedu.Standby();
}
} /// <summary>
/// 重启
/// </summary>
/// <returns></returns>
public async Task ResumScheduler()
{
if (schedu.InStandbyMode)
{
//Standby 靠边站的,
await schedu.Start();
}
}
对大容器进行 暂停 重启。整个调度都会停止的。
Job增删查改
public async Task AddJob(string name, string group, string des, string dll, string typename)
{
if (await schedu.CheckExists(new JobKey(name, group)))
{ }
else
{
//先建立好一个job项目,然后只用创建一个实现了IJob接口的类库。在把这个类库添加到动态的添加到job项目中。
var dllinstanck = Assembly.LoadFile(dll).CreateInstance(typename);
IJobDetail job = JobBuilder.Create(dllinstanck.GetType()).WithIdentity(name, group).WithDescription(des).StoreDurably(true).Build();
await schedu.AddJob(job, true); }
} public async Task AddOrUpdateJob(string name, string group, string des, string dll, string typename)
{
//StoreDurably 持久化存储
//该工作在孤儿之后是否应该继续存储(没有触发器就是孤儿)
var dllinstanck = Assembly.LoadFile(dll).CreateInstance(typename);
IJobDetail job = JobBuilder.Create(dllinstanck.GetType()).WithIdentity(name, group).WithDescription(des).StoreDurably(true).Build();
await schedu.AddJob(job, true); //var jobde = await schedu.GetJobDetail(new JobKey(name, group));
//jobde.GetJobBuilder().OfType().WithDescription("sdfsdf"); }
public async Task DelJob(string name, string group)
{
await schedu.DeleteJob(new JobKey(name, group));
}
public async Task<IList<IJobDetail>> GetJobs()
{
List<IJobDetail> joblist = new List<IJobDetail>();
var keys = await schedu.GetJobKeys(GroupMatcher<JobKey>.AnyGroup());
foreach (var item in keys)
{
var job =await schedu.GetJobDetail(item);
joblist.Add(job);
}
return joblist;
}
/// <summary>
/// 停止job就是停止job关联的trigger。
/// job是没有状态的。
///
/// 播放器 暂停 。在开始将 接着原来的。
///
/// </summary>
/// <param name="name"></param>
/// <param name="group"></param>
/// <returns></returns>
public async Task SchedulerPauseJob(string name, string group)
{
await schedu.PauseJob(new JobKey(name, group));
} /// <summary>
/// 恢复job 和 pause相对
/// </summary>
/// <param name="name"></param>
/// <param name="group"></param>
/// <returns></returns>
public async Task SchedulerResumeJob(string name, string group)
{
await schedu.ResumeJob(new JobKey(name, group));
}
Trigger增删查改
public async Task AddTrigger(string jobName, string jobGroupName, string triggerName, string triggerGroupName, string cron, string des)
{
var exitTrigger = await schedu.CheckExists(new TriggerKey(triggerName, triggerGroupName));
if (!exitTrigger)
{
if (await schedu.CheckExists(new JobKey(jobName, jobGroupName)))
{
var trigger = TriggerBuilder.Create().WithIdentity(triggerName, triggerGroupName).WithDescription(des).WithCronSchedule(cron).ForJob(jobName, jobGroupName).Build();
await schedu.ScheduleJob(trigger);
}
}
} public async Task<IList<ITrigger>> GetTrrigers()
{
List<ITrigger> triggerList = new List<ITrigger>();
var triggerKeys = await schedu.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup());
foreach (var item in triggerKeys)
{
var trigger = await schedu.GetTrigger(item);
var job = await schedu.GetJobDetail(trigger.JobKey);
var actionName = job.GetType().FullName;
var nextTime = trigger.GetNextFireTimeUtc();
var preTime = trigger.GetPreviousFireTimeUtc();
var startTime = trigger.StartTimeUtc;
triggerList.Add(trigger);
}
return triggerList;
} public async Task UpdateTrigger(string triggerName, string triggerGroupName, string des)
{
var trigger = await schedu.GetTrigger(new TriggerKey(triggerName, triggerGroupName));
var triggerNew = TriggerBuilder.Create().WithIdentity(triggerName, triggerGroupName).WithDescription(des).ForJob(trigger.JobKey).Build();
await schedu.RescheduleJob(trigger.Key, triggerNew);
}
public async Task PauseTrigger(string name, string group)
{
await schedu.PauseTrigger(new TriggerKey(name, group));
} public async Task ResumeTrigger(string name, string group)
{
await schedu.ResumeTrigger(new TriggerKey(name, group));
} public async Task DelTrigger(string name, string group)
{
await schedu.UnscheduleJob(new TriggerKey(name, group));
}
Calendar增删查改
public async Task AddCalendar(string caName, string triggerKey, string value)
{
var oldCal=await schedu.GetCalendar(caName);
if (oldCal != null)
{
throw new Exception("");
}
else
{
CronCalendar cronCal = new CronCalendar(value);
await schedu.AddCalendar(caName, cronCal,true,true); var oldTrigger=await schedu.GetTrigger(new TriggerKey(triggerKey));
if (oldTrigger != null)
{
var newTrigger= oldTrigger.GetTriggerBuilder().ModifiedByCalendar(caName).Build();
await schedu.RescheduleJob(newTrigger.Key, newTrigger);
} }
} public async Task UpdateCalendar(string caName, string triggerKey, string value)
{
var oldCal = await schedu.GetCalendar(caName);
if (oldCal != null)
{
throw new Exception("");
}
else
{
CronCalendar cronCal = new CronCalendar(value);
// 替换原来老的 自动更新触发器
await schedu.AddCalendar(caName, cronCal, true, true);
}
} public async Task DelCalendar(string caName, string triggerKey)
{
//删除calendar之前 必须先接触trigger和calendar的关系。
var trigger=await schedu.GetTrigger(new TriggerKey(triggerKey));
//一般这里要遍历所有的trigger,
var newTrigger= trigger.GetTriggerBuilder().ModifiedByCalendar(null).Build();
await schedu.RescheduleJob(newTrigger.Key, newTrigger); await schedu.DeleteCalendar(caName);
} public async Task<IList<ICalendar>> GetCalendars()
{
IList<ICalendar> calList = new List<ICalendar>();
var nameList = await schedu.GetCalendarNames();
for (int i = ; i < nameList.Count; i++)
{
var cal= await schedu.GetCalendar(nameList.ElementAt(i));
calList.Add(cal);
}
return calList;
}
动态的排除一些时间
Quartz.Net—基本操作的更多相关文章
- quartz.net插件类库封装(含源码)
1.前言 目录: 1.quartz.net任务调度:源码及使用文档 2.quartz.net插件类库封装 最近项目需要做一写任务作业调度的工作,最终选择了quartz.net这个插件,它提供了巨大的灵 ...
- 基于Quartz.net的远程任务管理系统 二
紧接着上一篇.上一篇讲了表设计与ADO.Net基本操作.接下来,就来说说怎么动态来添加Job任务及清理过期任务吧. 首先,先理一下思路,做事情要先把思绪理清了,然后下手就快准狠了.下面是我的思路:做一 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)
1.前言 今天再一次在官网看到了ArcGIS Runtime SDK for Android下一个版本“Quartz”版的更新资料,它将是一个非常重要的更新,包括API接口的重构和开发思路的调整.具体 ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
随机推荐
- python简单图形界面GUI入门——easygui【转】
原文:https://blog.csdn.net/mingqi1996/article/details/81272621 感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回 ...
- java查询数据库数据时报错antlr/ANTLRException
在集成SH项目时,写hql 语句总是查不出东西,而且报 java.lang.NoClassDefFoundError: antlr/ANTLRException,郁闷了很久在网上终于找到了答案,原来是 ...
- GCN: Graph Convolutional Network
从CNN到GCN的联系与区别: https://www.zhihu.com/question/54504471/answer/332657604 更加详解Laplacian矩阵: https://ww ...
- hive匹配中文
select regexp_extract('ab中文123测试55..', '[\u4e00-\u9fa5]+', 0) 只提出成功第一段中文汉字,结果为: 中文 select regexp_rep ...
- fastjson字段顺序问题
构造函数中指定使用有序 public JSONObject(boolean ordered) { this(16, ordered);} 示例: JSONObject fastJson = new J ...
- mac PHP安装imageMagic扩展
1. 安装:ImageMagick:命令:brew install ImageMagick这种方式安装下来的imageMagic,不缺少东西,报错较少.安装之后的位置:/usr/local/Cella ...
- mysql的备份与还原,安装(window)
之前一直使用的navicat的自动的备份功能.但是在使用navicat的还原功能时,贼慢. 今天要做的是window服务器上将mysql单个数据库备份.然后还原到我的mac笔记本上. 本来以为很快的, ...
- Influxdb修改数据保留策略
retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据. ...
- Spring cloud微服务安全实战-4-3常见的微服务安全整体架构
整体架构 这个图适合中小公司.麻雀虽小 五脏俱全.微服务架构所需要做的事在这个图里基本都有了. 绿色的不讲,主要讲的是这三块(橘黄色的).后面的和运维相关,会讲,不会讲的太深 订单服务 首先来写一个订 ...
- Fragment already added问题的解决
问题 当快速点击切换不同的Fragment的时候部分手机的app竟然挂了,报出了下面的错误 Fragment already added java.lang.IllegalStateExcepti ...