分布式任务调度组件 Uncode-Schedule
[url]http://www.oschina.net/p/uncode-schedule[/url]
Uncode-Schedule 是基于 zookeeper+quartz/spring task 的分布式任务调度组件,非常小巧,无需任何修改就可以使quartz/spring task具备分布式特性,确保所有任务在集群中不重复,不遗漏的执行。
功能概述
基于zookeeper+spring task的分布任务调度系统。
确保每个任务在集群中不同节点上不重复的执行。
单个任务节点故障时自动转移到其他任务节点继续执行。
任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。
支持已有任务动态停止和运行。
说明:
单节点故障时需要业务保障数据完整性或幂等性。
具体使用方式和spring task相同,只需要配置ZKScheduleManager即可。
项目地址: oschina:http://git.oschina.net/uncode/uncode-schedulegithub:
基于Spring XML配置
Spring bean
public class SimpleTask {
private static int i = 0;
public void print() { System.out.println("===========start!========="); System.out.println("I:"+i);i++; System.out.println("=========== end !========="); }}
xml配置
<!-- 分布式任务管理器 --><bean id="zkScheduleManager" class="cn.uncode.schedule.ZKScheduleManager" init-method="init"> <property name="zkConfig"> <map> <entry key="zkConnectString" value="127.0.0.1:2181" /> <entry key="rootPath" value="/uncode/schedule" /> <entry key="zkSessionTimeout" value="60000" /> <entry key="userName" value="ScheduleAdmin" /> <entry key="password" value="password" /> <!-- 是否自动注册本地任务到zk集群,默认为true --> <entry key="autoRegisterTask" value="true" /> </map> </property></bean><!-- Spring bean配置 --><bean id="taskObj" class="cn.uncode.schedule.SimpleTask"/><!-- Spring task配置 --><task:scheduled-tasks scheduler="zkScheduleManager"> <task:scheduled ref="taskObj" method="print" fixed-rate="5000"/></task:scheduled-tasks>
基于Spring Annotation配置
Spring bean
@Componentpublic class SimpleTask {
private static int i = 0;
@Scheduled(fixedDelay = 1000) public void print() { System.out.println("===========start!========="); System.out.println("I:"+i);i++; System.out.println("=========== end !========="); }
}
xml配置
<!-- 配置注解扫描 --><context:annotation-config /><!-- 自动扫描的包名 --><context:component-scan base-package="cn.uncode.schedule" /><!-- 分布式任务管理器 --><bean id="zkScheduleManager" class="cn.uncode.schedule.ZKScheduleManager" init-method="init"> <property name="zkConfig"> <map> <entry key="zkConnectString" value="127.0.0.1:2181" /> <entry key="rootPath" value="/uncode/schedule" /> <entry key="zkSessionTimeout" value="60000" /> <entry key="userName" value="ScheduleAdmin" /> <entry key="password" value="password" /> <!-- 是否自动注册本地任务到zk集群,默认为true --> <entry key="autoRegisterTask" value="true" /> </map> </property></bean><!-- Spring定时器注解开关--><task:annotation-driven scheduler="zkScheduleManager" />
基于Quartz的XML配置
注意:spring的MethodInvokingJobDetailFactoryBean改成cn.uncode.schedule.quartz.MethodInvokingJobDetailFactoryBean
<bean id="zkScheduleManager" class="cn.uncode.schedule.ZKScheduleManager" init-method="init"> <property name="zkConfig"> <map> <entry key="zkConnectString" value="127.0.0.1:2181" /> <entry key="rootPath" value="/uncode/schedule" /> <entry key="zkSessionTimeout" value="60000" /> <entry key="userName" value="ScheduleAdmin" /> <entry key="password" value="password" /> <entry key="autoRegisterTask" value="true" /> </map> </property></bean>
<bean id="taskObj" class="cn.uncode.schedule.SimpleTask"/>
<!-- 定义调用对象和调用对象的方法 --><bean id="jobtask" class="cn.uncode.schedule.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject" ref="taskObj" /> <!-- 调用类中的方法 --> <property name="targetMethod" value="print" /></bean><!-- 定义触发时间 --><bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="jobtask"/> </property> <!-- cron表达式 --> <property name="cronExpression"> <value>0/3 * * * * ?</value> </property></bean><!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --><bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime"/> </list> </property></bean>
分布式任务调度组件 Uncode-Schedule相关推荐
- 这些优秀的国产分布式任务调度系统,你用过几个?
2019独角兽企业重金招聘Python工程师标准>>> 分布式调度在互联网企业中占据着十分重要的作用,尤其是电子商务领域,由于存在数据量大.高并发的特点,对数据处理的要求较高,既要保 ...
- LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
- java timer.schedule如何控制执行次数_Java 分布式任务调度平台:PowerJob 快速开始+配置详解...
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri 引言 HelloGitHub 推出的<讲解开源项目>[1]系列. 项目地址: https://githu ...
- XXL-Job分布式任务调度框架-- 介绍和调度中心的搭建启动1
一 xxl-job介绍 1.1 xxl-job介绍 xxl-job是轻量级的分布式任务调度框架,目标是开发迅速.简单.清理.易扩展; 老版本是依赖quartz的定时任务触发,在v2.1.0版本开始 移 ...
- 聊聊分布式任务调度系统
我看过那么多所谓的教程,大部分都是教"如何使用工具"的,没有多少是教"如何制作工具"的,能教"如何仿制工具"的都已经是凤毛麟角,中国 软件行 ...
- XXL-JOB v2.0.2,分布式任务调度平台
v2.0.2 Release Notes 1.底层通讯方案优化:升级较新版本xxl-rpc,由"JETTY"方案调整为"NETTY_HTTP"方案,执行器内嵌n ...
- 分布式任务调度平台 XXL-JOB
https://opentalk.upyun.com/303.html 2017 年 10 月 22 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...
- XXL-JOB v2.0.1 发布,分布式任务调度平台
XXL-JOB 正在角逐 " 2018 开源中国软件",期待您宝贵的一票! 投票链接: https://www.oschina.net/proje... v2.0.1 Releas ...
- XXL-JOB v2.0.2,分布式任务调度平台 | 多项特性优化更新
开发四年只会写业务代码,分布式高并发都不会还做程序员? v2.0.2 Release Notes 1.底层通讯方案优化:升级较新版本xxl-rpc,由"JETTY"方案调整为& ...
- 探寻繁杂定时任务的解决方案:分布式任务调度系统
导语:本文我们从架构和技术实现上来为大家讲解腾讯云分布式任务调度系统TCT(Tencent Cloud Task)如何实现任务调度的精准实时.稳定高效,以及任务的切分和编排.(编辑:中间件小Q妹) 0 ...
最新文章
- C++中的cin、cin.getline()、getline()函数比较
- Linux下安装二进制版mysql-8.0.15
- 什么是COM与DCOM
- 带有.rdlc报表的项目发布需要注意的问题
- Java基础----对象与类
- 广告中oCPX到底是如何进行优化的
- Redux中的功能式React式编程简介
- python 识别子串的位置_Python基础语法小白这一篇就足够了!
- 04-树4. Root of AVL Tree (25)
- svnserver配置文件详解
- 无线充电Qi通信协议分析
- 蚁群算法详解及其工程源码
- NWR,Gossip,Paxos分布式一致性协议
- 三星:大小屏QLED和OLED两手都要抓,都要硬
- 大学英语四六级往年成绩查询+成绩单补办教程(四级/六级/4级/6级/46级)
- 7-6 愿天下有情人都是失散多年的兄妹(25 分)
- 2月28日,鸿蒙群友见面会活动回顾
- 教授专栏37 | 黄昊: 发展虚拟资产, 须监管教育并行
- 三国群雄传ol服务器 修改,三国群雄传四大兵营进阶改造攻略详解
- windows 远程连接服务器和安装nginx