quartz

spring quartz定时任务

非 Y 不嫁゛ 提交于 2020-03-02 12:43:07
配置quartz 在spring中需要三个jar包: quartz-1.8.5.jar、commons-collections-3.2.1.jar、commons-logging-1.1.jar 首先要配置我们的spring.xml xmlns 多加下面的内容、 [html] view plain copy xmlns:task = "http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容、 [html] view plain copy http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd 最后是我们的task任务扫描注解 [html] view plain copy < task:annotation-driven /> 我的配置扫描位置是: [html] view plain copy < context:annotation-config /> < bean class = "org.springframework.beans.factory.annotation

Java 判断一个给定时间是否满足Cron表达式

筅森魡賤 提交于 2020-03-02 02:49:08
实现方式 直接使用quartz的CronExpression#isSatisfiedBy(Date date)来判断 在自己程序中创建一个工具类来实现,代码使用quartz的CronExpression 原因: 项目中使用的Spring boot的注解式定时任务,并没有使用quartz,所以为了使用一个CronExpression#isSatisfiedBy(Date date)而引入整个quartz不太合适 quartz的CronExpression类完全可以单独拿出来使用,所以在自己项目中使用同名类,代码使用org.quartz.CronExpression的代码 import org.junit.Assert; import org.junit.Test; import org.quartz.CronExpression; import java.text.SimpleDateFormat; public class TestCron { @Test public void cron() throws Exception { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CronExpression cronExpression = new

quartz CronExpression表达式

早过忘川 提交于 2020-03-02 02:18:06
格式为: 秒 分 时 日 月 周 年 序号 说明 必填 值 通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 or JAN-DEC , - * / 6 周 是 1-7 or SUN-SAT , - * ? / L # 7 年 否 empty 或 1970-2099 , - * / 通配符说明: * 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。 ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。 例如:要在每月的10号触发一个操作,但不关心是周几, 所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ? - 表示区间。 例如 在小时上设置 "10-12",表示 10,11,12点都会触发。 , 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发 / 用于递增触发。 如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。 L 表示最后的意思。 在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会 依据是否是润年[leap]), 在周字段上表示星期六

Quartz cron表达式(时间表达式)

对着背影说爱祢 提交于 2020-03-01 14:50:54
Quartz cron表达式(时间表达式) 2017年03月28日 09:56:42 阅读数:3845 标签: quartz 更多 个人分类: Java开发 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Smile_Miracle/article/details/67632254 Cron表达式示例: 表达式 说明 "0 0 12 * * ? " 每天12点运行 "0 15 10 * * ?" 每天10:15运行 "0 15 10 * * ? 2011" 2011年的每天10:15运行 "0 * 14 * * ?" 每天14点到15点之间每分钟运行一次,开始于14:00,结束于14:59。 "0 0/5 14 * * ?" 每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。 "0 0/5 14,18 * * ?" 每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。 "0 0-5 14 * * ?" 每天14:00点到14:05,每分钟运行一次。 "0 10,44 14 ? 3 WED" 3月每周三的14:10分到14:44,每分钟运行一次。 "0 15 10 ? * MON-FRI" 每周一,二,三,四,五的10:15分运行。 "0 15 10 15 * ?" 每月15日10

quartz 使用 PostgreSQL抛错“不良的类型值: long : \x

£可爱£侵袭症+ 提交于 2020-02-29 21:58:05
在quartz PostgreSQL 的建表语句中找的如下内容,加到 quartz.properties -- In your Quartz properties file, you'll need to set -- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate 搞定! 来源: oschina 链接: https://my.oschina.net/u/2623727/blog/1863444

maven下整合spring和quartz

青春壹個敷衍的年華 提交于 2020-02-29 07:59:34
最近在研究Spring中的定时任务功能,最好的办法当然是使用Quartz来实现。对于一个新手来说,花了我不少时间,这里我写个笔记,给大家参考。 我使用的是Maven来管理项目,需要的Jar包我给大家贴出来。 quartz-1.8.5.jar commons-logging.jar spring-core-3.0.5.RELEASE.jar spring-beans-3.0.5.RELEASE.jar spring-context-3.0.5.RELEASE.jar spring-context-support-3.0.5.RELEASE.jar spring-asm-3.0.5.RELEASE.jar spring-expression-3.0.5.RELEASE.jar spring.transaction-3.0.5.RELEASE.jar spring-web-3.0.5.RELEASE.jar Maven的pom.xml的配置: Xml代码 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:

Spring Boot系列二 Spring @Async异步线程池用法总结

不羁岁月 提交于 2020-02-28 15:49:14
. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。 2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方 3. ConcurrentTaskExecutor:Executor的适配类,不推荐使用。如果ThreadPoolTaskExecutor不满足要求时,才用考虑使用这个类 4. SimpleThreadPoolTaskExecutor:是Quartz的SimpleThreadPool的类。线程池同时被quartz和非quartz使用,才需要使用此类 5. ThreadPoolTaskExecutor :最常使用,推荐。 其实质是对java.util.concurrent.ThreadPoolExecutor的包装 2. @Async spring对过@Async定义异步任务 异步的方法有3种 1. 最简单的异步调用,返回值为void 2. 带参数的异步调用 异步方法可以传入参数 3. 异常调用返回Future 详细见代码: @Component public class AsyncDemo

Java Timer

坚强是说给别人听的谎言 提交于 2020-02-28 10:39:08
1. Timer – The Basics Timer and TimerTask are java util classes used to schedule tasks in a background thread. In a few words – TimerTask is the task to perform and Timer is the scheduler . 2. Schedule a Task Once Let's start by simply running a single task with the help of a Timer : 1 2 3 4 5 6 7 8 9 10 11 12 13 @Test public void givenUsingTimer_whenSchedulingTaskOnce_thenCorrect() { TimerTask task = new TimerTask() { public void run() { System.out.println( "Task performed on: " + new Date() + "n" + "Thread's name: " + Thread.currentThread().getName()); } }; Timer timer = new Timer( "Timer" )

总结:延时任务队列的原理与实现

不想你离开。 提交于 2020-02-27 11:42:45
延时任务有别于定式任务,定式任务往往是固定周期的,有明确的触发时间。而延时任务一般没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件。也就是说,任务事件生成时并不想让消费者立即拿到,而是延迟一定时间后才接收到该事件进行消费。 延迟任务相关的业务场景如下: 场景一:在订单系统中,一个用户某个时刻下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将自动进行过期处理。 场景二:用户某个时刻通过手机远程遥控家里的智能设备在指定的时间进行工作。这时就可以将用户指令发送到延时队列,当指令设定的时间到了再将指令推送到只能设备。 下面我们来探讨一些方案,其实这些方案没有好坏之分,和系统架构一样,只有最适合。对于数据量较小的情况下,任意一种方案都可行,考虑的是简单明了和开发速度,尽量避免把系统搞复杂了。而对于数据量较大的情况下,就需要有一些选择,并不是所有的方案都适合了。 解决方式 定时器轮询遍历数据库记录 JDK的DelayQueue JDK ScheduledExecutorService 时间轮(netty) 利用quartz等定时任务 Redis的ZSet实现 rabbitMq实现延时队列 定时器轮询遍历数据库记录 这是比较常见的一种方式,所有的订单或者所有的命令一般都会存储在数据库中

异步线程池使用@@

对着背影说爱祢 提交于 2020-02-27 08:45:54
简介 spring 异步线程池的接口类,其实质是 Java .util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。 2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方 3. ConcurrentTaskExecutor:Executor的适配类,不推荐使用。如果ThreadPoolTaskExecutor不满足要求时,才用考虑使用这个类 4. SimpleThreadPoolTaskExecutor:是Quartz的SimpleThreadPool的类。线程池同时被quartz和非quartz使用,才需要使用此类 5. ThreadPoolTaskExecutor :最常使用,推荐。 其实质是对java.util.concurrent.ThreadPoolExecutor的包装 一、异步 线程池 配置 1. 注解方式 使用@EnableAsync就可以使用多线程;使用@Async就可以定义一个线程任务;通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。 自定义线程池 ,并在类上添加@EnableAsync 注解, 线程池前缀