quartz

Quartz.Net使用教程

社会主义新天地 提交于 2019-12-02 17:04:56
原文: Quartz.Net使用教程 在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要 Quartz.Net 了。 Quartz.Net 是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。 Quartz.Net 一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持Cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承IJob接口即可。 对于小型应用, Quartz.Net 可以集成到你的系统中,对于企业级系统,它提供了Routing支持,提供了Group来组织和管理任务,此外还有持久化、插件功能、负载均衡和故障迁移等满足不同应用场景的需要。 Hello Quartz.Net # 开始使用一个框架,和学习一门开发语言一样,最好是从Hello World程序开始。 首先创建一个示例程序,然后添加Quartz.Net的引用。 CopyInstall-Package Quartz -Version 3.0.7 我们使用的是当前最新版本3.0.7进行演示。添加引用以后,来创建一个Job类 HelloQuartzJob 。 Copypublic class

spring整合quartz框架

醉酒当歌 提交于 2019-12-02 16:58:01
spring整合quartz: 网上也有很多教程,好多都是基于配置方式,我们使用当然怎么简单就怎么用,所以这里介绍基于注解方式整合quartz。前提:你需要有一个能运行的web项目。 1、引依赖: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> 注意: 网上有的教程说还必须引入 spring-context-support 依赖,但是本项目没有引入这个也可以正常使用quartz,可能是最新版不需要这个依赖了。 2、开启quartz的注解: 一般我们都在service层使用quartz,所以在 spring-service.xml 中进行如下配置: <context:component-scan base-package="com.zhu.meilianMall.service" /> <task:annotation-driven/> 注意: 第一行扫描包的配置是ssm整合本来就需要的,等下quartz的注解也只能在这个包下使用。 3、使用quartz的注解: 在 com.zhu.meilianMall.service 包下创建测试类,在需要定时执行的方法上加上 @Scheduled

.Net Core中使用Quartz.Net Vue开即用的UI管理

给你一囗甜甜゛ 提交于 2019-12-02 14:58:35
原文: .Net Core中使用Quartz.Net Vue开即用的UI管理 Quartz.NET Quartz.Net 定制UI维护了常用作业添加、删除、修改、停止、启动功能,直接使用cron表达式设置作业执行间隔,有完整的日志记录。 Quartz.NET是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。 Quartz.NET是一个用C#编写的纯.NET库,是对JAVA开源调度框架Quartz的移植。目前支持.Net Core Quartz.NET官方地址: https://www.quartz-scheduler.net/ 1.Quartz.NetUI 开发环境 .net core2.1及以上版本、vs2017、Quartz.NET 3.0.7 、 vue 2.0 、IView 2.开箱即用、不依赖数据库 直接运行Quartz.NetUI\Quartz.NET.Web目录下run.bat文件或部署项目 登陆口令token位于appsettings.json节点token 管理员帐号位于appsettings.json节点superToken 3.主要代码文件 QuartzSettings 文件夹由系统自动生成,与项目文件夹同级,存放作业配置信息及日志信息(发布时不需要发布或复制此文件夹) TaskAuthorizeFilter.cs 帐号权限

Net作业调度(四)—quartz.net持久化和集群

China☆狼群 提交于 2019-12-02 14:48:47
原文: Net作业调度(四)—quartz.net持久化和集群 介绍 在实际使用quartz.net中,持久化能保证实例重启后job不丢失、 集群能均衡服务器压力和解决单点问题。 quartz.net在这两方面配置都比较简单。 持久化 quartz.net的持久化,是把job、trigger一些信息存储到数据库里面,以解决内存存储重启丢失。 下载sql脚本 https://github.com/quartznet/quartznet/blob/master/database/tables/tables_sqlServer.sql 创建个数据库,并执行脚本 QRTZ_BLOB_TRIGGERS 以Blob 类型存储的触发器。 QRTZ_CALENDARS 存放日历信息, quartz.net可以指定一个日历时间范围。 QRTZ_CRON_TRIGGERS cron表达式触发器。 QRTZ_JOB_DETAILS job详细信息。 QRTZ_LOCKS 集群实现同步机制的行锁表 QRTZ_SCHEDULER_STATE 实例信息,集群下多使用。 quartz.net 配置 //===持久化==== //存储类型 properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"; /

Net作业调度(五)—quartz.net动态添加job设计

若如初见. 提交于 2019-12-02 14:48:35
原文: Net作业调度(五)—quartz.net动态添加job设计 介绍 在实际项目使用中quartz.net中,都希望有一个管理界面可以动态添加job,而避免每次都要上线发布。 也看到有园子的同学问过。这里就介绍下实现动态添加job的几种方式, 也是二次开发的核心模块。 阅读目录: 传统方式 框架反射方式 进程方式 URL方式 框架配置方式 传统方式 继承IJob,实现业务逻辑,添加到scheduler。 public class MonitorJob : IJob { public void Execute(IJobExecutionContext context) { //do something Console.WriteLine("test"); } } //var job = JobBuilder.Create<MonitorJob>() // .WithIdentity("test", "value") // .Build(); //var trigger = (ICronTrigger) TriggerBuilder.Create() // .WithIdentity("test", "value") // .WithCronSchedule("0 0/5 * * * ?") // .Build(); //scheduler.ScheduleJob(job,

quartz在集群环境下解决方案

≯℡__Kan透↙ 提交于 2019-12-02 14:30:49
在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB 。 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVICE : A , B , C 3 台机器上各有一个 QUARTZ ,他们会按照即定的 SCHEDULE 自动执行各自的任务。 我们先不说实现什么功能,就说这样的架构其实有点像多线程。 那多线程里就会存在“资源竞争”的问题,即可能产生脏读,脏写,由于三台 APP SERVER 里都有 QUARTZ ,因此会存在重复处理 TASK 的现象。 一般外面的解决方案是只在一台 APP 上装 QUARTZ ,其它两台不装,这样集群就形同虚设了; 另一种解决方案是动代码,这样就要影响到原来已经写好的 QUARTZ JOB 的代码了,这对程序开发人员来说比较痛苦; 本人仔细看了一下 Spring 的结构和 QUARTZ 的文档,结合 Quartz 自身可以实例化进数据的特性找到了相关的解决方案。 本方案优点: 1. 每台作为集群点的 APP SERVER 上都可以布署 QUARTZ ; 2. QUARTZ 的 TASK ( 12 张表)实例化如数据库,基于数据库引擎及 High-Available 的策略(集群的一种策略)自动协调每个节点的 QUARTZ ,当任一一节点的 QUARTZ

SpringBoot-集成Quartz

流过昼夜 提交于 2019-12-02 12:16:16
前面一篇文章( SpringBoot-定时任务 )中介绍了如何用SpringBoot框架中的注解方式来实现定时任务,这种方式的好处是不使用第三方的依赖,仅凭几个方便的注解,即可编写一个简单的定时任务处理。 实际开发中为了满足复杂的业务场景,比如任务暂停、恢复、删除等操作。上面这种方式就不能满足了,这一节我们来学习SpringBoot集成Quartz框架来实现复杂的任务调度处理。 Quzrtz简介 Quartz是一个由Java语言编写的开源任务调度框架,具有简单高效、容错、支持分布式等优点。 主要API: Scheduler :与调度器交互的主要API。 Job :需要被调度器调度的任务必须实现的接口。 JobDetail :用于定义任务的实例。 Trigger :用于定义调度器何时调度任务执行的组件。 JobBuilder :用于定义或创建JobDetail的实例 。 TriggerBuilder :用于定义或创建触发器实例。 数据库准备 Quertz需要将任务的相关信息保存到数据库中,所以我们需要提前创建好数据库,库名自己定义好后,执行以下SQL语句: DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS ; DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS ; DROP TABLE IF EXISTS

Quartz中时间表达式的设置-----corn表达式

倾然丶 夕夏残阳落幕 提交于 2019-12-02 04:54:27
Quartz中时间表达式的设置-----corn表达式 时间格式: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒>分>小时>日>月>周>年, 举例: 1.每天什么时候执行: <value>0 59 23 * * ?</value>: 如下为每天23:59:00开始执行 <value>0 1,2,3 11,12 * * ? </value>: 每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务 2.每隔多久执行: 汇总说明: Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”; ●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符; ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12; ●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五; ●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y

技术大牛分享:JAVA学习路线

旧街凉风 提交于 2019-12-01 20:32:50
01 Java 开发介绍 - DOS 常用命令 - JVM 、 JRE 、 JDK 之间的关系 - Java 开发环境的搭建:安装 JDK ,配置环境变量 - JDK 中常用的工具(编译,执行) - Java 入门程序( Java 的开发流程) - Java 的注释 - 标识符、标识符的命名规范 - Java 关键字 - Java 基本数据类型 - Java 基本类型之间的相互转换 - 变量和常量的定义及初始化 - 变量的分类 - Java 的运算符 - 表达式 - 转义字符 - 运算符的优先级 - Java 分支语句之 if...else - 多重 if...else 、嵌套 if...else - Java 分支语句之 switch-case 结构 - switch 与 if 的区别 - Java 循环 for 、 while 、 do...while - 循环的嵌套 - break 、 continue 的使用以及区别 - 方法的定义 - 方法的形参和实参 - 无返回值的方法 - 有返回值的方法 - return 语句的使用 - 方法的调用 - 方法的压栈 - 方法的重载 - 方法的递归调用 02 数组 - Java 数组的定义 - Java 数组的声明 - 数组的优势与局限 - 数组的静态初始化 - 数组的动态初始化 - 数组的存储特点(堆和栈) - 数组单个元素的访问 -

用 Quartz 进行作业调度

谁都会走 提交于 2019-12-01 17:35:34
Quartz API 采用多面方式在 Java 应用程序中进行任务调度 Michael Lipton ( mwlipton@us.ibm.com ), 软件工程师, IBM Soobaek Jang ( sjang@us.ibm.com ), IT 架构师/集成师, IBM 简介: Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师 Michael Lipton 和 IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一般概述开始,并以一系列展示 Quart 基本特性的代码示例作为结束。在阅读完本文并看过代码示例后,您应当能够把 Quartz 的基本特性应用到任何 Java™ 应用程序中。 发布日期: 2006 年 12 月 28 日 级别: 中级 访问情况 : 49185 次浏览 评论: 3 ( 查看 | 添加评论 - 登录) 平均分 (105个评分) 为本文评分 现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个底层组件也必须相应地发展。作业调度是现代系统中对 Java 应用程序的一般要求,而且也是对 Java 开发人员一贯的要求。虽然目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来说,已经发展了许多,但是作业调度仍然不是个小问题。对这个问题最合适的解决方案就是来自