Quartz - 作业调度框架-插件化开发

背景

大部分业务都是基于定时的任务,特别适合使用quartz这类框架解决定时问题。具体quartz的使用,看官方文档就可以了。下面谈谈对quartz插件化的封装。我们使用quartz.plugin。然后在quartz_jobs.xml方法里面定义了schedule,其中灵活的地方在于,里面定义了Jobs的属性,在QuartzPlugin的start方法执行的时候,会去加载quartz_jobs文件,逐个job信息进行加载。

解决思路

在实际使用中,开发就变得相对简单了,不需要关注job任务是如何被调度的。只需要在程序中定义一个类实现job接口,填充业务代码,然后在文件里面填写该job属性:

  [DisallowConcurrentExecution]public class AnalysisJob : IJob{public void Execute(IJobExecutionContext context){xxxxxxxxxx}}
 <job><name>名称</name><group>分组</group><description>描述</description><job-type>类库</job-type><durable>true</durable><recover>false</recover></job>

 这样的封装就赋予框架新的技能,大大提高了开发人员的开发效率。

主要代码

using System;
using System.Collections.Generic;
using System.Linq;
using Topshelf;namespace HSCP.Task
{class Program{static void Main(string[] args){HostFactory.Run(x =>{x.Service<MainService>((s) =>{s.ConstructUsing(settings => new MainService());s.WhenStarted(tr => tr.Start());s.WhenStopped(tr => tr.Stop());});x.RunAsLocalSystem();x.SetDescription("");x.SetDisplayName("xxxx任务管理器");x.SetServiceName("HSCP.Task");});}}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;namespace HSCP.Task
{class MainService{static IScheduler sched;public void Start(){try{ISchedulerFactory factory = new StdSchedulerFactory();sched = factory.GetScheduler();sched.Start();Console.WriteLine($"共 {sched.GetJobGroupNames().Count} 任务");foreach (string gn in sched.GetJobGroupNames())Console.WriteLine(gn);}catch (Exception exc){Console.WriteLine(exc.ToString());}// NLogger.Info(string.Format("启动成功 {0}", DateTime.Now));}public void Stop(){sched.Shutdown(true);}}
}

开源地址

https://github.com/quartznet/quartznet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程

一键重装虽好&#xff0c;但也不是万能的。俗语说&#xff1a;治标不治本。也许你懂得用各种一键备份还原工具重装&#xff0c;但不一定懂得手动GHOST重装。为此&#xff0c;吻妻为大家分享一下如何手动GHOST还原重装系统&#xff0c;本教程步骤虽多&#xff0c;但很多都是点“…

图解一步步安装SharePoint Foundation 2010

图解一步步安装SharePoint Foundation 2010 下载后在Windows Server 2008 R2上进行安装安装产品必须的一些组件&#xff0c;比原来好多了不用自己一个个下了。同意许可&#xff0c;此产品为不收费版本&#xff0c;不用序列号了&#xff01;&#xff01;&#xff01;安装相关的…

MYSQ 查看 2 进制日志

方法 1&#xff1a; myqlbinlog filename; -----------------------------------------------------------------------------------------------------------------------------------------------

当身为老师的爸爸上课时......​

1 当身为老师的爸爸上课时......▼2 气氛突然微妙......▼3 隔壁的一家人都馋哭了&#xff01;▼4 结束疫情隔离的你▼5 WOW!AMAZING!▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢&#xff1f;▼你点的每个赞&#xff0c;我都认真当成了喜欢

七招挽回受损WORD文档

七招挽回受损WORD文档在你试图打开一个Word文档时&#xff0c;如果系统没有响应&#xff0c;那么可能的原因是该文档已经损坏。此时&#xff0c;请试试笔者以下所述方法&#xff0c;或许能够挽回你的全部或部分损失。一、自动恢复尚未保存的修改Word提供了“自动恢复”功能&…

yum php fpm5.6,CentOS 7 yum 安装php5.6

配置yum源追加CentOS 6.5的epel及remi源。# yum install epel-release# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm以下是CentOS 7.0的源。# yum install epel-release# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm使用…

Handler和HandlerThread

1.什么是Handler&#xff1f; SDK中关于Handler的说明例如以下&#xff1a; A Handler allows you to sendand process Messageand Runnable objects associated with a threads MessageQueue.Each Handler instance is associated with a single thread and that threadsmessa…

amos里CFA可行性辨别结果怎么看_论文用问卷调查法,数据分析怎么做?

论文问卷数据的分析&#xff0c;看起来简单&#xff0c;好像每个人都会做。但是做起来还真的有点难度。很多初次使用问卷调查方法的人大多以为&#xff0c;问卷数据分析嘛&#xff0c;无外乎对单选题做做频率分析&#xff0c;看看选择不同的选项的人占比有多少。对于评分题目&a…

转:asp.net 负载平衡-Session相关

来自&#xff1a;http://www.cnblogs.com/zxylonely/archive/2009/12/23/1630197.htmlhttp://blog.csdn.net/lvlingwy/archive/2008/05/08/2418673.aspxhttp://bbs.ibeifeng.com/simple/index.php?t16926.html转自&#xff1a;http://sai5d.blog.sohu.com/131936651.html在WEB…

Hello Blazor:(10)按需加载JavaScript脚本

前言Blazor支持执行JavaScript脚本&#xff0c;通常是将脚本放在wwwroot/index.html(Blazor WebAssembly)或Pages/_Host.cshtml(Blazor Server)中。但是&#xff0c;这种方式会将所有JS方法用全局函数加载&#xff0c;即使某些方法只需要在特定组件中使用。既影响加载性能&…

只有学霸才懂的学习技巧,看完脑洞大开,绝对涨姿势!

▲ 点击查看法国生物学家乔治.居维叶曾说&#xff1a;“天才&#xff0c;首先是注意力。”事实上&#xff0c;除开那些逆天的天才之外&#xff0c;大部分人的智商&#xff0c;在先天因素的决定下&#xff0c;都是差不多的。但是专注力却可以因为后天的刻意训练&#xff0c;而有…

DOM Xerces类库使用方法

DOM Xerces类库使用方法Tuxedo中XML的历史  如 今随着XML逐渐成为主流的数据格式之一&#xff0c;自然而然地 Tuxedo将之作为一种基本缓冲类型予以支持。    Tuxedo 7.1 引入了XML缓冲类型&#xff0c;但迄今为止对于Tuxedo中的XML并无较多的论述。Tuxedo 7.1中并未携带真…

解析邻居的耳朵音乐地址(单页下载)

偶尔听歌的时候发现了一个很小众的音乐分享网站&#xff0c;邻居的耳朵&#xff0c;有个人的电台类型&#xff0c;属于音乐分享文字分享&#xff0c;觉得很不错。从域名来看&#xff0c;属于多米旗下的网站&#xff1a;http://ear.duomi.com/ 看来多米收购了很多这样的小站&am…

为什么电脑不能打字_嘉兴在线丨「生活经济学」为什么笔记本电脑能在任何国家的供电标准下运作,其他大部分电器却不能?...

【生活热搜】从日本背回来的电饭煲煮饭口感总是不对&#xff0c;用几天就坏了&#xff1b;英国邮回来的吹风机怎么都插不上电源只能闲置……如果你有从国外买家用电器的经历&#xff0c;你一定会发现很多电器因为每个国家或地区的供电标准不同而无法正常使用的情况。但笔记本电…

【DotNetMLLearn】.NET Core 人工智能系列-.NET Interactive环境介绍

在进入.NET Core 的人工智能应用开始前&#xff0c;我们先把环境搭建好&#xff0c;为以后的学习提供一个便利。作为一个.NET 程序员&#xff0c;或者其他编程语言的程序员&#xff0c;相信对IDE的依赖必不可少&#xff0c;如Visual Studio/Visual StudioCode , IntelliJ , Ecl…

php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用

废话就不多说 直接上代码&#xff0c;亲测好用原生&#xff1a;/*** curl发送htpp请求* 可以发送https,http,get方式,post方式,post数据发送*/public function dataRequest($url,$httpstrue,$methodget,$datanull){//初始化curl$ch curl_init($url);//字符串不直接输出&#x…

在程序员的道路上,义无反顾的努力,有思想的人,很多,好的想法,需要学习。(以此共勉)...

程序员&#xff1a;差距在哪里&#xff0c;你与开发高手的距离到底有多远&#xff1f;投递人 itwriter 发布于 2010-08-27 13:45 评论(19) 有5369人阅读 [收藏]开发者的技术成长是个永恒的话题。《如何成为一个专家级的开发者》文中虽然界定了专家的概念和开发者成长为专家级的…

2020届的毕业生怎么这么苦!

一提到毕业论文我们身上的每个细胞都在告诉自己这件事太麻烦了&#xff01;每天要思考着选题、开题报告、查资料写稿、排版、答辩、做PPT......除了8000到20000的字数要求完成一篇毕业论文&#xff0c;要依次经历确定论文选题&#xff0c;提交开题报告查阅行业文献&#xff0c;…

线切割机上的DOS系统

昨天朋友的线切割机上的系统无法启用了。于是朋友叫我过去看看。哈&#xff0c;原来是DOS系统加上线切割机控制软件开机提示HIMEM.SYS未加载&#xff0c;所以EMM386.EXE未能启动。机器是很老的机器了&#xff0c;当然了配置也不需要太高了。因为这样的东西没有加载成功&#xf…

RMSE均方根误差学习笔记

1.均方根误差&#xff0c;它是观测值与真值偏差的平方和观测次数n比值的平方根&#xff0c;在实际测量中&#xff0c;观测次数n总是有限的&#xff0c;真值只能用最可信赖&#xff08;最佳&#xff09;值来代替.方根误差对一组测量中的特大或特小误差反映非常敏感&#xff0c;所…