quartz

QuartZ

江枫思渺然 提交于 2019-11-29 07:06:47
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); // 从JobDetail中获取JobDataMap的数据 String jobDataMessage = jobDataMap.getString("message"); System.out.println("任务数据的参数值:" + jobDataMessage); // 获取Trigger对象中获取JobDataMap的数据 JobDataMap jobDataMap2 = context.getTrigger().getJobDataMap(); String triggerDataMessage = jobDataMap2.getString("message"); System.out.println("触发器数据的参数值:" + triggerDataMessage); //获取trigger的内容 TriggerKey triggerKey=context.getTrigger().getKey(); System.out.println("触发器名称:"+triggerKey.getName()+";触发器组:"+triggerKey.getGroup()); System.out.println("****************")

便宜有便宜的办法-小微企业云上的springboot集群方案1:有个plan

我的未来我决定 提交于 2019-11-29 06:40:54
1、小微企业特点 互联网的小微企业,往高大上说就是新锐企业,往低里说呢就是穷B企业,不管怎么样,反正特点都是一样的: 没有多少开发人员,能少一个是一个 没有专职的岗位,DBA,运维,测试,这都是啥,反正都是开发人员一肩挑(如果老板很讨厌的话,会加一句,全栈) 没有自己的硬件,反正能不自己建就不自己建(如果老板打听过的话,会说一句,上云) 要快(如果老板很烦人的话,会加一句,要敏捷) 在这种条件下,有能力的程序员表示很有挑战性,纷纷用脚投票去了腾讯、阿里这些大厂。而那些没有能力的码农(比如我),则不畏惧挑战,决意在这种恶劣的环境下艰难求生(主要是大厂不要)。 其实在企业的很长的一个发展阶段,单机的性能是可以扛着性能压力的,所以我们的第一个方案就简单了。 2、PLAN A 在云服务商购买一个公司需要的域名,并配置域名指向购买的服务器IP 在云服务商购买一台云服务器,安装好nginx和java环境,nginx配置域名的指向,配置程序指向的云数据库地址 在云服务商购买云数据库服务,比如用的最多的mysql 上面三种商品在一家云服务商就能完成,全程只需要买买买就好了。而且价格都还算好,一台普通的云服务器在5000左右(1年费用),数据库在6000多(一年费用),域名便宜,只要几十块而已,而运行起来也很简单,只要把程序打包上去就可以跑起来了。 如果还需要省钱,当然可以在云服务器上自建mysql

quartz cron表达式

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 03:44:56
Cron表达式是由6所需的字段和一个可选字段由空格分隔 Cron表达式的格式:秒 分 时 日 月 周 年(可选) Field Name Allowed Values Allowed Special Characters Seconds 0-59 , - * / Minutes 0-59 , - * / Hours 0-23 , - * / Day-of-month 1-31 , - * ? / L W Month 1-12 or JAN-DEC , - * / Day-of-Week 1-7 or SUN-SAT , - * ? / L # Year (Optional) empty, 1970-2199 , - * / “*”字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。 “?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。 由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置一个问号. “-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。"0 0 9 ? * 2-6" 周一到周五每天上午9点 “,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。 “/”字符用于指定增量。如:

WorkSample.Quartz

谁都会走 提交于 2019-11-29 03:12:22
using Quartz; using Quartz.Impl; using System; using System.Threading.Tasks; namespace WorkSample.Quartz { class Program { static void Main(string[] args) { ScheduleJobs().GetAwaiter().GetResult(); } private static async Task ScheduleJobs() { var scheduler = await new StdSchedulerFactory().GetScheduler(); await scheduler.Start(); await scheduler.ScheduleJob( JobBuilder.Create<FirstJob>().Build(), TriggerBuilder.Create().StartNow().WithCronSchedule("0/1 * * * * ? *").Build() // http://cron.qqe2.com/ ); await scheduler.ScheduleJob( JobBuilder.Create<SecondJob>().Build(), TriggerBuilder.Create()

解决Quartz定时任务被触发两次的问题(附带:Quartz的测试用例)

跟風遠走 提交于 2019-11-29 02:59:34
很多人在使用spring的 Quartz 配置定时任务时,会发现每次定时时间到达后,指定的定时方法同时执行了两次。 (P.S. 本人项目用的Jfinal搭建,同样出现该问题。) 解决quartz定时任务被触发两次的问题: 其中 <Host/> 告诉tomcat,在启动的时候加载webapps下的所有项目工程文件, <Context/> 又让tomcat再加载了一遍(一般情况下配置 <Context/> ,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两次。 <Host/>里面的改成 autoDeploy="false" deployOnStartup="false" 这样就可以避免tomcat服务器中自启动导致quartz定时任务被触发两次。(当然还可以按需求修改,毕竟每个项目的需求都不尽相同。) 1. autodeploy属性值设置为false,如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用,设成false就不会。 2.增加deployOnStartup="false",表示Tomcat服务器启动时, 不会自动发布appBase目录下所有的Web应用。 这样的话,在tomcat启动时,不会自动发布appBase下的应用

Spring Boot 实现定时任务的 4 种方式

我的梦境 提交于 2019-11-29 01:59:16
定时任务实现的几种方式: Timer :这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 ScheduledExecutorService :也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。 Spring Task :Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。 Quartz :这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。 使用Timer 这个目前在项目中用的较少,直接贴demo代码。具体的介绍可以查看api public class TestTimer { public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("task run:"+ new Date()); } }; Timer timer = new Timer

便宜有便宜的办法-小微企业云上的springboot集群方案1:有个plan

人盡茶涼 提交于 2019-11-29 01:37:36
1、小微企业特点 互联网的小微企业,往高大上说就是新锐企业,往低里说呢就是穷B企业,不管怎么样,反正特点都是一样的: 没有多少开发人员,能少一个是一个 没有专职的岗位,DBA,运维,测试,这都是啥,反正都是开发人员一肩挑(如果老板很讨厌的话,会加一句,全栈) 没有自己的硬件,反正能不自己建就不自己建(如果老板打听过的话,会说一句,上云) 要快(如果老板很烦人的话,会加一句,要敏捷) 在这种条件下,有能力的程序员表示很有挑战性,纷纷用脚投票去了腾讯、阿里这些大厂。而那些没有能力的码农(比如我),则不畏惧挑战,决意在这种恶劣的环境下艰难求生(主要是大厂不要)。 其实在企业的很长的一个发展阶段,单机的性能是可以扛着性能压力的,所以我们的第一个方案就简单了。 2、PLAN A 在云服务商购买一个公司需要的域名,并配置域名指向购买的服务器IP 在云服务商购买一台云服务器,安装好nginx和java环境,nginx配置域名的指向,配置程序指向的云数据库地址 在云服务商购买云数据库服务,比如用的最多的mysql 上面三种商品在一家云服务商就能完成,全程只需要买买买就好了。而且价格都还算好,一台普通的云服务器在5000左右(1年费用),数据库在6000多(一年费用),域名便宜,只要几十块而已,而运行起来也很简单,只要把程序打包上去就可以跑起来了。 如果还需要省钱,当然可以在云服务器上自建mysql

任务调度框架Quartz实现的跑批程序(二)

我的梦境 提交于 2019-11-29 00:26:28
J2EE中用的最多的任务调度框架应该就是Quartz了,最近比较清闲,就来详细了解一下Quartz;用这个博客来记录下学习心得,如有错误之处,还请各位大神指点。 1.关键接口 Scheduler,任务调度的API;它可以用来启动或者终止任务等。 Job,具体的任务接口;通过实现它,来让任务调度执行具体的任务。 JobDetail ,用来定义Job的实例。 Trigger ,触发器用来定义给定的Job应该如何执行。 JobBuilder ,用来定义/构建Jobdetail实例。 TriggerBuilder ,用来定义/构建Trigger实例。 2.简单例子 下面是一个简单的例子,创建一个简单的任务调度。 创建一个Job,名为HelloJob: public class HelloJob implements Job{ @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("hello job, "+ DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); } } 实现Job接口中的execute方法,这个方法中是我们需要任务调度执行的具体内容,这里我们只简单打印

Quartz将Job保存在数据库中所需表的说明

醉酒当歌 提交于 2019-11-29 00:26:17
QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息 QRTZ_FIRED_TRIGGERS 存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息 QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的 Trigger 组的信息 QRTZ_SCHEDULER_STATE 存储少量的有关 Scheduler 的状态信息,和别的 Scheduler实例(假如是用于一个集群中) QRTZ_LOCKS 存储程序的悲观锁的信息(假如使用了悲观锁) QRTZ_JOB_DETAILS 存储每一个已配置的 Job 的详细信息 QRTZ_JOB_LISTENERS 存储有关已配置的 JobListener 的信息 QRTZ_SIMPLE_TRIGGERS 存储简单的Trigger,包括重复次数,间隔,以及已触的次数 QRTZ_BLOG_TRIGGERS Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候) QRTZ_TRIGGER_LISTENERS 存储已配置的 TriggerListener 的信息 QRTZ

Quartz的搭建、应用(单独使用Quartz)

一曲冷凌霜 提交于 2019-11-29 00:26:03
Quartz在Java构建的系统中,是十分常用的定时任务框架。 本文,记录、介绍Quartz的简单入门的单独搭建(此文入门学习Quartz为主,并非基于Spring托管形式)。 > 参考的优秀资料 Quartz Quick Start Guide Chapter 3: Logback configuration > 版本说明 除了Quartz,还引入logback(为了看详细的日志嘛!) View Code > 简单的搭建 jar包的引入参考上述的pom文件。 quartz.properties,配置quartz的设置。 注 ,org.quartz.threadPool.threadCount,配置线程池的容量,即表示同时最多可运行的线程数量。在生产环境,此参数应根据实际情况配置。 View Code logback.xml,日志框架logback的配置。这里只简单地配置了控制台和日志文件的输出哦(>_<) View Code HelloJob.java,具体执行的任务 package No01简单的定时任务; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import