最近发现真的凹凸了,Spring升级到3后原来已经自带任务调度器了,之前还一直使用着Quartz。其实也不是Quartz不好,只是相比之下,使用Spring task真的简单很多,无论是理解还是使用。
Spring Task提供两种方式进行配置,正如大家所想吧,还是一种是annotation(标注),而另外一种就是XML配置了。但其实这里我觉得比较尴尬,因为任务调度这样的需求,通常改动都是比较多的,如果用annotation的方式的话,改动就变得麻烦了,必须去重新编译。所以,我只是选择用XML配置的方式,不过我还是习惯性地启用着标注方式,就如AOP配置那样。annotation方式请自行查找@Scheduled
具体配置参考如下即可
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> <bean id="reminderProcessor" class="com.foo.task.ReminderProcessor"> <property name="workers"> <array value-type="com.foo.task.Worker"> <ref bean="projectScheduleRemindWorker" /> </array> </property> </bean> <!-- 配置任务线性池 --> <task:executor id="executor" pool-size="3" /> <task:scheduler id="scheduler" pool-size="3" /> <!-- 启用annotation方式 --> <task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true" /> <task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="reminderProcessor" method="process" cron="0 0 12 * * ?" /> </task:scheduled-tasks> </beans>
核心部分见
<task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="reminderProcessor" method="process" cron="0 0 12 * * ?" /> </task:scheduled-tasks>
意思就是每天的12点执行reminderProcessor这个Bean中的process方法。cron的配置表达式跟Quartz基本一致,但实测不支持一些特殊字符,如配置天的时候的L,W和Z,因为遇到要每个月倒数第三天执行任务调度的需求,但我一配置SpringTask报非法字符。
所以,Quartz和SpringTask间的差距也显而易见的。SpringTask用起来十分简单,毕竟是Spring自家的,虽然跟Quartz也可以实现结合,但没那么简单。而SpringTask功能也没Quartz强大,Quartz的集群和高级特性多的去了。所以大家可以自行选择了。不过一般情况下,觉得SpringTask足够了。
附上我这个例子的详细UML说明
相关推荐
但如果只是简单的跑个任务其实spring升级到3后已经自带任务调度器了,相比之下Spring task无论是理解还是使用都简单很多。但是Quartz有线程和线程管理以及集群等高级特性,所以大家可以自行选择了。不过一般情况下,...
Spring 定时器 任务调度 怎么在项目中写定时任务 怎么配置一些环境
基于zookeeper+spring task的分布式任务调度组件,非常小巧,无需任何修改就可以使spring task具备分布式特性,确保所有任务在集群中不重复,不遗漏的执行。 5.Quartz 官方地址:...
Spring Task+Zookeeper分布式定时任务调度组件-Taroco-Scheduler
除了使用Spring Boot提供的任务管理功能外,可以使用第三方库Quartz来处理更复杂的任务调度需求。Quartz提供了更多的调度策略、任务监听器等功能。 以上是一些在Spring Boot中实现任务管理的常见方案。你可以根据...
支持多种接入方式,支持Java SDK包方式、Java Agent独立进程方式接入,以及兼容XXLJob框架、Spring Task框架任务无缝接入。多语言执行器实现,计划支持Go或者Rust语言执行器(正在设计与开发中)的接入,满足在资源...
使用 Spring 中的 TaskScheduler 来启动/停止任务。
分布式任务调度管理 Distribution task center. 支持Rabbit与kafka两种消息队列,实现立即执行与根据CronExpress表达式的执行及更加复杂的复合执行策略。在任务执行过程中可完成回滚操作。 在微服务中我们经常会...
Spring框架分别使用TaskExecutor和TaskScheduler接口提供异步执行和任务调度的抽象。Spring还提供了这些接口的实现,这些接口支持线程池或将其委托给应用服务器环境中的CommonJ。 Spring2.0开始引入的新的抽像。...
Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析,做了一些测试说明了各个参数的作用
1.使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行. 2.Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多.
使用spring-redis操作有序集合:opsForZSet().reverseRangeByScoreWithScores使用spring的线程池:org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor使用spring的任务调度:task:scheduled-tasks使
业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis等。 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等 微服务治理:Eureka、...
任务调度系统目的是对spring boot类型的java项目的cron类型的定时任务进行集中管理,实现分布式的任务调度,任务自动发现,任务执行状态可视化查看等功能。 任务调度系统主要功能有: 任务管理和查看。提供任务调度...
业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis等。 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等 微服务治理:Eureka、...
Spring task, 可以查询已经注册的任务。立即执行一次任务。 5、缓存和Session =========== 注解redis缓存数据,Spring-session和redis实现分布式session同步(建议按功能模块划分系统)。 6、日志 =========== ...
任务调度:Spring Task 持久层框架:beetlsql 模板引擎:beetl 数据库连接池:Alibaba Druid 缓存框架:Ehcache 日志管理:SLF4J、LOGBACKUP 工具类:Apache Commons、FastJson、EASYPOI、BladeToolBox 2、...
技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+...SpringSecurity, 跨域:cro s 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task
引入camunda作为任务执行框架,支持工作流式任务编排、并发批量调度和参数传递。 简介 分布式、多租户的支持流程编排的任务调度应用 同时支持Redis分布式锁和Quartz数据库悲观锁 基于camunda工作流引擎,支持工作...
freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task,有问题请留言