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实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
随机推荐
- MySQL 获得 当前日期时间 函数
mysql> select now(); 输出 -- :: 例子 mysql> ), now(); +---------------------+----------+---------- ...
- STP生成树详解图
- 常用的maven仓库地址
maven 仓库地址: 共有的仓库http://repo1.maven.org/maven2/http://repository.jboss.com/maven2/http://repository. ...
- 【转】Python编程: 多个PDF文件合并以及网页上自动下载PDF文件
1. 多个PDF文件合并1.1 需求描述有时候,我们下载了多个PDF文件, 但希望能把它们合并成一个PDF文件.例如:你下载的数个PDF文件资料或者电子发票,你可以使用python程序合并成一个PDF ...
- springlcoud中使用consul作为注册中心
好久没写博客了,从今天开始重新杨帆起航............................................ springlcoud中使用consul作为注册中心. 我们先对比下注册 ...
- Tomcat7/8/8.5三种版本的redis-session-manager的jar和xml配置均不同
chexagon/redis-session-manager: A tomcat8 session manager providing session replication via persiste ...
- ArrayAdapter和ListView
利用ArrayAdapter向ListView中添加数据 <?xml version="1.0" encoding="utf-8"?> <Li ...
- JDBC DataSource
What is DataSource? 作为 DriverManager 设施的替代项,DataSource 对象是获取连接的首选方法.实现DataSource 接口的对象通常在基于 Java(TM) ...
- Linux_CentOS 打包压缩和别名管理
Linux 打包压缩命令 目前 linux 中打包和压缩的命令很多,最常用的方法有 zip.gzip.bzip2.xz.tar 1.zip 压缩包 1.制作 zip -r public.zip pub ...
- Python之BeautifulSoup的使用示例
import requests from bs4 import BeautifulSoup url = 'http://pm25.in/'+city_pinyin r = requests.get(u ...