quartz

c# 任务调度篇QuartZ(第三部分:实现管理可视化)

随声附和 提交于 2020-01-24 00:56:02
1.新建一个项目 2.引入QuartZ/CrystalQuartz 3.访问:http://localhost:50611/CrystalQuartzPanel.axd 4.指定StdSchedulerFactory监控参数 端口和可视化项目的 webconfig 下的provider value 端口保持一直 原有项目代码 # region Scheduler //StdSchedulerFactory factory = new StdSchedulerFactory(); //IScheduler scheduler = await factory.GetScheduler(); IScheduler scheduler = await ScheduleManager . BuildScheduler ( ) ; await scheduler . Start ( ) ; # endregion ScheduleManager类 public class ScheduleManager { public async static Task < IScheduler > BuildScheduler ( ) { var properties = new NameValueCollection ( ) ; properties [ "quartz.scheduler

Quartz简介

。_饼干妹妹 提交于 2020-01-23 22:06:09
任务调度概述   以论坛为例,每天凌晨统计用户的积分排名,每隔30分钟对锁定到期的用户进行解锁。对别的应用来说,每月一日凌晨统计数据生成月报表,每隔半小时查询用户是否有快到期的待处理业务。   以上所举调度场景的核心都是以时间为关注点的调度,即在特定的时间点执行指定的操作。任务调度本身设计多线程并发、运行时间规则指定与解析、运行现场保持与恢复、线程池维护等诸多方面的工作。如果直接使用自定义线程的方法处理,开发会很具有挑战性。Quartz提供的功能让开发者可以应对绝大多数任务调度的功能需求。 Quartz基础结构   Quartz对任务调度的领域问题进行了高度抽象,提出了调度器、任务和触发器这3个核心的概念。 Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者通过实现该接口来定义需要执行的任务,JobExecutionContext 类提供了调度上下文的各种信息,Job运行时的信息保存在JobDataMap实例中。 JobDetail:Quartz在每次执行Job时都重新创建一个Job实例,所以它不是直接接受一个Job实例,而是接受一个Job实现类,以便运行时通过newInstance()的反射调用机制实例化Job。JobDetail承担的角色就是描述Job的实现类及其他相关的静态信息,如Job名称、描述

Quartz.NET作业调度框架详解

自闭症网瘾萝莉.ら 提交于 2020-01-23 08:52:50
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业. Quartz.NET入门 要开始使用 Quartz.NET,需要用 Quartz.NET API 对项目进行配置。步骤如下: 1. 到 http://quartznet.sourceforge.net/download.html 下载 Quartz.NET API,最新版本是1.0.3 2. 解压缩Quartz.NET

问题排查 Active Scheduler of name 'MyClusterScheduler' already registered in Quartz SchedulerRepository.

孤街醉人 提交于 2020-01-22 06:39:06
一、Error日志&原因 最近在搞Springboot整合Quartz2.3.0的时候遇到了一个诡异的问题,工程启动不起来。 错误log: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schedulerFactoryBean' defined in class path resource [com/nana/matrix/timer/quartz/QuartzConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Active Scheduler of name 'MyClusterScheduler' already registered in Quartz SchedulerRepository. Cannot create a new Spring-managed Scheduler of the same name! at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory

杂谈篇之我是怎么读源码的,授之以渔

自古美人都是妖i 提交于 2020-01-19 06:52:30
转自: https://www.cnblogs.com/youzhibing/p/9553752.html 以下为原文。 读源码的经历   刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该不需要改;另外即使我改了源码,怎么样让我的改动生效了? 项目中引用的不还是没改的jar包吗。回想起来觉得那时候的想法确实挺......   工作了一年多之后准备跳槽了,开始了一轮的面试,其中有几个面试官就问到了相关的源码问题:ArrayList、HashMap的底层实现,spring、mybatis的相关源码。问源码的面试一般就是回去等消息,然后就没然后了。那时候开始意识到,源码这东西在之前的工作的中感受不到,但是在面试中好像面的还挺频繁的,从此有意识的开始了jdk部分源码的阅读(主要是集合)。一开始看源码,看的特别糙,知道个大概,知道ArrayList的底层实现是数组,HashMap的底层是散列表(数组+链表);更深入一点的扩容、hash碰撞等等就不知道了。   读spring源码起于工作中遇到了一个问题( spring jdbcTemplate事务,各种诡异,包你醍醐灌顶! ),排查一段时间最终是解决了,但过程让我非常难受,各种上网查资料、各种尝试,感觉就像大海捞针一样,遥遥无期。我下定决心,我要看一看spring的源码,于是我买了一本

Quartz任务调度Job有无状态

感情迁移 提交于 2020-01-16 15:56:15
有状态的job和无状态的job @PersistJobDataAfterExecution注解的使用 有状态的job可以理解为多次Job调用期间可以持有一些状态信息,这些状态信息存储在JobDataMap中,而默认的无状态job每次调用时都会创建一个新的jobDataMap 添加count的setter和getter方法 public Integer getCount ( ) { return count ; } public void setCount ( Integer count ) { this . count = count ; } public Integer getCount ( ) { return count ; } 在execute方法中添加 public void execute ( JobExecutionContext jobExecutionContext ) throws JobExecutionException { ++ count ; //输出count的值 System . out . println ( "count的值:" + count ) ; //将count的值存放到jobDataMap中 jobExecutionContext . getJobDetail ( ) . getJobDataMap ( ) . put ( "count

[Quartz笔记]玩转定时调度

时光怂恿深爱的人放手 提交于 2020-01-16 15:45:10
目录 简介   Quartz是什么?   Quartz的应用场景 Quartz的安装   安装   源码 Hello World范例 API   核心API   其他常见API CronExpression表达式   表达式规则   符号说明   使用表达式的案例 参考资料 简介 Quartz是什么? Quartz是一个特性丰富的、开源的作业调度框架。它可以集成到任何Java应用。 使用它,你可以非常轻松的实现定时任务的调度执行。 Quartz的应用场景 场景1:提醒和告警 场景2:监听事务 场景3:定时作业 Quartz的安装 安装 1.可以直接在官网: http://www.quartz-scheduler.org/ 下载jar包。 2.如果使用maven,可以在pom.xml中添加以下依赖jar包: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> <

Quartz.NET作业调度框架详解

泄露秘密 提交于 2020-01-16 12:27:59
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业. Quartz.NET入门 要开始使用 Quartz.NET,需要用 Quartz.NET API 对项目进行配置。步骤如下: 1. 到 http://quartznet.sourceforge.net/download.html 下载 Quartz.NET API,最新版本是1.0.3 2. 解压缩Quartz.NET

Quartz.Net学习笔记

半城伤御伤魂 提交于 2020-01-16 12:19:45
原文: Quartz.Net学习笔记 一、概述   Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。   通俗说它的功能是:比如说我想每天晚上2点让程序或网站执行某些代码,或者每隔5秒种我想查看是否有新的任务要处理等。 官网: http://www.quartz-scheduler.net/ 源码: https://github.com/quartznet/quartznet 示例: http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html   其实Quartz是一个完全由java编写的开源作业调度框架,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。而Quartz.Net与NPOI一样是一个DoNet平台下的对应版本

Quartz.NET入门

自古美人都是妖i 提交于 2020-01-16 11:57:20
Quartz.NET是一个开源的作业调度框架。 官网地址:https://www.quartz-scheduler.net/ 目前最新版本为3.0.7,需要.NET Framework 4.5.2及更高版本以上。 .NET Framework 4.0及以下可以用版本2.6.2。 本文用的是2.6.2版本,下面为入门例子。 1、创建2个简单任务 Hello1Job.cs public class Hello1Job : IJob { public void Execute(IJobExecutionContext context) { LogHelper.Info("hello1"); } } Hello2Job.cs public class Hello2Job : IJob { public void Execute(IJobExecutionContext context) { LogHelper.Info("hello2"); } } 2、创建任务服务 QuartzService.cs //引用Quartz、Quartz.Impl; public class QuartzService { //调度器 IScheduler scheduler; public QuartzService() { //调度器工厂 ISchedulerFactory factory = new