Quartz.Net—基本操作
阿新 • • 發佈:2018-03-17
meta .sh ets syn 暫停 splay object iou ops
Quratz基本架構
Scheduler基本操作
/// <summary> /// 調度器信息 /// </summary> /// <returns></returns> public async Task<SchedulerMetaData> GetSchedulerI { var mate = await schedu.GetMetaData(); var json = JsonConvert.SerializeObject(mate); return mate; } /// <summary> ///View Code開始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)); }View Code
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)); }View Code
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); }View Code
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)); }View Code
Quartz.Net—基本操作