quartz

02.Quartz 环境搭建-基于jdbc-mysql

白昼怎懂夜的黑 提交于 2019-11-28 18:18:45
笔者前面介绍了quartz 基于内存的环境搭建, 接下来在前面的基础上, 将项目修改为基于jdbc存储的quartz环境. quartz 2.x 共有11张表, 需要事先导入数据库中. quartz 针对常见的数据库均提供了初始化脚本, 位于docs/dbTables目录中. 1. quartz 相关表 quartz 默认表前缀为QRTZ_, quartz 支持修改表前缀. 但是由于quartz默认表名比较长, 因此修改后可能会导致标识符过长的问题. 通常情况下, 我们并不用关注quartz表数据, 更不需要私自操作quartz 表数据. 笔者这里也只介绍几张核心表: QRTZ_TRIGGERS: 存储所有定时任务的信息 QRTZ_SIMPLE_TRIGGERS: 存储SimpleTrigger 触发器的信息 QRTZ_CRON_TRIGGERS: 存储CronTrigger 触发器的信息 QRTZ_JOB_DETAILS: 存储定时任务的相关信息 QRTZ_FIRED_TRIGGERS: 存储已触发的触发器信息 QRTZ_PAUSED_TRIGGER_GRPS: 存储暂停的触发器组信息 QRTZ_BLOB_TRIGGERS: 存储二进制触发器信息 2. 修改项目 2.1 添加数据库驱动依赖 <!-- 数据库驱动 --> < dependency > < groupId >

01.Quartz 环境搭建-基于内存

别等时光非礼了梦想. 提交于 2019-11-28 18:18:43
quartz 是java 领域中应用最广泛的一个定时任务调度框架, 支持两种存储方式:基于内存存储和基于数据库存储. 同城在企业开发中都是结合spring使用, 直接按指定规则配置即可. 但是笔者认为, 要想对quartz 有个相对比较深入的了解, 还是应该搭建一个JavaSE 环境来进行学习和测试. quartz 的开发流程: 创建调度器工厂 加载配置文件(如果使用默认配置文件名, 则可以省略) 获取调度器 创建定时任务 创建触发器(可以是SimpleTrigger 和 CronTrigger) 将定时任务添加到调度器中 启动调度器 1. 项目搭建 笔者习惯于使用maven 开发项目, 因此首先创建一个maven 项目. 1.1 引入maven 依赖 quartz 只需要引入一个核心依赖 quartz 即可. quartz 默认使用slf4j 输出日志, 但是笔者习惯于使用logback, 因此直接替换了logback 的包. 笔者使用junit 单元测试进行测试 <!-- 相关版本号 --> < properties > < quartz.version > 2.2.3 </ quartz.version > < slf4j.api.version > 1.7.25 </ slf4j.api.version > < logback.version > 1.2.3 </

Spring+Quartz实现定时任务 (二)

旧时模样 提交于 2019-11-28 12:26:01
在我们进行软件项目开发的过程中,相信大家在很多时候都会遇到如下业务场景:每天、每周或每月生成相应的业务报表;每天统计系统注册人数;定期清理平台长久不登录的用户等等。遇到这种业务场景需要怎样去处理?人为定时去 数据库 操作来统计?别开玩笑了,这种事情哪用得着人来做,如果像这种任务还需要专人每天都去做统计,那估计很多人就要疯掉了。针对于这种业务情况,采用定时任务是个非常不错的选择。在 Java 领域中,定时任务的开源工具也非常多,小到一个Timer类,大到Quartz框架。总体来说,个人比较喜欢的还是Quartz,功能强大而且使用方便。接下来我们就看一下如何通过Spring和Quartz来实现业务系统中的定时任务。 Spring整合Quartz实现定时任务步骤很简单,大致需要经过如下几步:创建任务(Job)、配置JobDetail、配置触发器(Trigger)、配置SchedulerFactoryBean 好了,废话不多说了,下面进入正题。 首先创建一个web项目并引入Spring和quartz的依赖 然后在web.xml文件中引入Spring支持 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java

Quartz监听器Listerner

百般思念 提交于 2019-11-28 12:24:53
概述 Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知。Quartz监听器主要有JobListener、TriggerListener、SchedulerListener三种,顾名思义,分别表示任务、触发器、调度器对应的监听器。三者的使用方法类似,在开始介绍三种监听器之前,需要明确两个概念:全局监听器与非全局监听器,二者的区别在于:全局监听器能够接收到所有的Job/Trigger的事件通知,而非全局监听器只能接收到在其上注册的Job或Trigger的事件,不在其上注册的Job或Trigger则不会进行监听。 JobListener 任务调度过程中,与任务Job相关的事件包括:job开始要执行的提示; job执行完成的提示灯。其接口如下: public interface JobListener { public String getName(); public void jobToBeExecuted(JobExecutionContext context); public void jobExecutionVetoed(JobExecutionContext context); public void jobWasExecuted(JobExecutionContext context, JobExecutionException

Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象

♀尐吖头ヾ 提交于 2019-11-28 12:24:39
问题 Quartz中的job是由Quartz框架动态创建的(配置该job的classname,通过反射创建),而job一般会依赖到配置在spring中的bean,怎样获取或者更好的自动注入这些依赖bean呢? 预期效果 我们希望达到这样的效果: /** * * 取消超时未支付订单的任务。 * * @author arganzheng */ public class CancelUnpaidOrderTask implements Job { @Autowired private AppOrderService orderService; @Override public void execute(JobExecutionContext ctx) throws JobExecutionException { ... } 关键在这一行: @Autowired private AppOrderService orderService; orderService是配置在spring容器中的,而CancelUnpaidOrderTask则是配置在Quartz数据库中,由 org.springframework.scheduling.quartz.SpringBeanJobFactory 运行时调用 protected Object createJobInstance

一些spring boot的配置

核能气质少年 提交于 2019-11-28 08:17:51
RabbitMQ 与 Redis 队列对比 https://www.cnblogs.com/chinaboard/p/3819533.html Spring batch的学习 https://www.cnblogs.com/kevin443/p/6753703.html Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。 lombok Lombok简介 Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的 ... Spring DevTools 介绍 https://blog.csdn.net/isea533/article/details/70495714 Nosql 简介 Redis , Memchche,MongoDb 的区别 https://www

C#之Quartz任务调度的使用(2.2.3.400)

女生的网名这么多〃 提交于 2019-11-28 07:41:20
这里使用的Quartz版本号为2.2.3.400,.net 框架为4.0。 目的实现一个小案例,每隔一秒钟打印一条记录。后面会附上源码,以供参考。 建立一个 控制台程序。 代码: class Program { static void Main(string[] args) { Run(); Console.ReadKey(); } /// <summary> /// 任务调度的使用过程 /// </summary> /// <returns></returns> public static void Run() { // 1.创建scheduler的引用 ISchedulerFactory schedFact = new StdSchedulerFactory(); IScheduler sched = schedFact.GetScheduler(); //2.启动 scheduler sched.Start(); // 3.创建 job IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build(); // 4.创建 trigger ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1

Quartz+Spring Boot实现动态管理定时任务

梦想与她 提交于 2019-11-28 07:39:36
在实践中遇到动态管理定时任务的需求,场景通常是动态添加、更新、删除任务,借助Quartz,可方便实现功能。 以下使用Quartz结合Spring Boot方式使用。 POM依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId>

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jeewx.weixin_account_user_relation' doesn't exist

爱⌒轻易说出口 提交于 2019-11-28 07:28:09
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building jeewx 2.0 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ jeewx >>> [INFO] Downloading: http://maven.aliyun.com/nexus/content/groups/public/commons-logging/commons-logging/maven-metadata.xml [INFO] Downloading: http://maven.jeecg.org/nexus/content/repositories/jeecg/commons-logging/commons-logging/maven-metadata.xml [INFO] Downloaded: http://maven.aliyun.com/nexus