当前位置: 首页 > news >正文

门户网站的基本特征有网站建设整个流程图

门户网站的基本特征有,网站建设整个流程图,北京工厂网站建设,哈尔滨优质官网建站企业1、调度器监听器 调度器本身收到的一些事件通知,接口ISchedulerListener,如作业的添加、删除、停止、挂起等事件通知,调度器的启动、关闭、出错等事件通知,触发器的暂停、挂起等事件通知,接口部分定义如下&#xff1a…

1、调度器监听器

调度器本身收到的一些事件通知,接口ISchedulerListener,如作业的添加、删除、停止、挂起等事件通知,调度器的启动、关闭、出错等事件通知,触发器的暂停、挂起等事件通知,接口部分定义如下:

//添加作业时通知事件
Task JobAdded(IJobDetail jobDetail, CancellationToken cancellationToken = default);
//移除作业时通知事件
Task JobDeleted(JobKey jobKey, CancellationToken cancellationToken = default);
//调度器出错时通知事件
Task SchedulerError(string msg, SchedulerException cause, CancellationToken cancellationToken = default);
//调度器正在关闭时通知事件
Task SchedulerShuttingdown(CancellationToken cancellationToken = default);
//调度器已启动时通知事件
Task SchedulerStarted(CancellationToken cancellationToken = default);
//调度器启动中通知事件
Task SchedulerStarting(CancellationToken cancellationToken = default);

注册方法:scheduler.ListenerManager.AddSchedulerListener(new MySchedulerListener());

MySchedulerListener为具体的调度器实现

2、触发器监听器

对触发器的通知事件监听,接口ITriggerListener,抽象类TriggerListenerSupport,接口定义如下:

public interface ITriggerListener
{string Name { get; }Task TriggerFired(ITrigger trigger, IJobExecutionContext context);Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context);Task TriggerMisfired(ITrigger trigger);Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode);
}

3、作业监听器

对Job的通知事件监听,接口IJobListener,抽象类JobListenerSupport,可以通过继承此类实现自定义监听器逻辑,

自定义监听器如下所示,主要是在三个执行方法中分别打印日志信息,观察日志打印顺序,

using Quartz;
using Quartz.Listener;
using System;
using System.Threading;
using System.Threading.Tasks;namespace QuartzConsole
{/// <summary>/// Job执行情况监听器/// </summary>public class MyJobListener : JobListenerSupport{public override string Name => "MyJobListener";public override Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default){Console.WriteLine($"JobWasExecuted已执行{DateTime.Now.ToLongTimeString()}");return base.JobWasExecuted(context, jobException, cancellationToken);}public override Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default){Console.WriteLine($"JobExecutionVetoed已执行{DateTime.Now.ToLongTimeString()}");return base.JobExecutionVetoed(context, cancellationToken);}public override Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default){Console.WriteLine($"JobToBeExecuted已执行{DateTime.Now.ToLongTimeString()}");return base.JobToBeExecuted(context, cancellationToken);}}
}

4、定义Job

using Quartz;
using System;
using System.Threading;
using System.Threading.Tasks;namespace QuartzConsole
{public class MyJob : IJob{public Task Execute(IJobExecutionContext context){var mapdata = context.JobDetail.JobDataMap;foreach (var item in mapdata){Console.WriteLine(item.Key + "," + item.Value);}Thread.Sleep(7000);//线程延迟7秒后执行return Console.Out.WriteLineAsync($"任务开始执行了:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");}}
}

5、创建调度器

创建调度器,并创建Job实例,触发器实例,调度器绑定Job实例和触发器实例,程序主代码如下所示,

using Quartz;
using Quartz.Impl;
using Quartz.Impl.Matchers;
using Quartz.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace QuartzConsole
{class Program{async static Task Main(string[] args){StdSchedulerFactory factory = new StdSchedulerFactory();var scheduler = await factory.GetScheduler();//创建调度器scheduler.ListenerManager.AddJobListener(new MyJobListener(), GroupMatcher<JobKey>.AnyGroup());//注册自定义监听器,对任何组织的job实施监听await scheduler.Start();//启动调度器var jobdata = new JobDataMap { };jobdata.Add("小张", "女孩子");jobdata.Add("小潘", 33);jobdata.Add("小唐", new DateTime(2019, 8, 6));IJobDetail job = JobBuilder.Create<MyJob>().WithIdentity("job1", "group1").DisallowConcurrentExecution(true)//禁止并发执行.SetJobData(jobdata).Build();#region 简单触发器,每隔5秒重复执行ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger", "group1").WithSimpleSchedule(x=>x.WithInterval(TimeSpan.FromSeconds(5)).RepeatForever()).Build();#endregionawait scheduler.ScheduleJob(job, trigger);Console.WriteLine("Press any key to close the application");Console.ReadKey();}}
}

6、运行程序

总结:自定义作业监听器注册后,执行顺序为MyJobListener.JobToBeExecuted->Job.Execute->MyJobListener.JobWasExecuted;

Job.DisallowConcurrentExecution(true),true时禁止该job的多个实例并发执行,即使触发器时间已来到下一个执行点,并不会立即触发创建job实例的执行,需要等待前一个job实例执行完成。为false时运行多个实例并发执行。

自建job需要处理好异常,否则事件监听器不会捕捉到事件通知。

http://www.yayakq.cn/news/648166/

相关文章:

  • 视觉网站建设wordpress备份图文文章
  • wordpress可以做什么站按天计费的seo弊端
  • 常德经开区网站官网wordpress适用于图片站的主题
  • 建行的官方网站吗h5做的网站如何连接数据库
  • 个人做流量大的网站网页设计html代码大全怎么改颜色
  • php网站建设外国参考文献阿里巴巴网站导航栏怎么做
  • 做游戏网站要备案吗html5网站建设报价
  • 长沙企业如何建网站合肥市建设工程市场价格信息网站
  • 南京做网站南京乐识赞公司简介ppt模板素材
  • 居家养老网站建设wordpress导入 ftp
  • 婚恋网站开发背景文献中国华能集团电子商务平台
  • 网站界面设计的基本原则是什么商家网站建设
  • 河北省和城乡建设厅网站首页wordpress主题怎么设置
  • 飞沐视觉北京网站建设公司苏州网站建设空间
  • 开发什么网站线上营销活动主要有哪些
  • 岳阳建设网站重庆建设工程质量监督信息网
  • o2o网站建设市场wordpress 输出 文章时间
  • php素材网站源码免费下载网站的域名分为哪些
  • 阿里云虚拟主机wordpress建站教程那些免费网站可以做国外贸易
  • 网站开发设计制作合同百度电商推广
  • 网站一年续费多少钱学生班级优化大师
  • iis 制作搜索网站深圳建站网络公司
  • 中国品牌网站建设电脑做网站怎么解析域名
  • 象刀设计网站响应式网站好不好
  • 商城网站类建设哪家好小说网站建设详细流程
  • 深圳专业返利网站开发做3d办公家具教程的网站
  • 卖保健品可以自己做网站卖吗高校心理健康网站建设与实现
  • 网站建设一站式网站挣钱怎么做
  • 做电影网站免责声明有用吗网站建设及 维护合同
  • 保定模板建站软件六师五家渠市建设局网站