Uncode-Schedule 分布式任务调度组件开源项目

我要开发同款
匿名用户2015年05月29日
41阅读
开发技术Java
所属分类程序开发、作业/任务调度
授权协议GPLv2

作品详情

基于zookeeper+springtask/quartz的分布式任务调度组件,确保所有任务在集群中不重复,不遗漏的执行。支持动态添加和删除任务。

功能概述基于zookeeper+springtask/quartz的分布任务调度系统。确保每个任务在集群中不同节点上不重复的执行。单个任务节点故障时自动转移到其他任务节点继续执行。任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。支持动态添加和删除任务。添加ip黑名单,过滤不需要执行任务的节点。简单管理后台说明:

单节点故障时需要业务保障数据完整性或幂等性具体使用方式和springtask相同k模块架构 

Uncode-ScheduleSpringbeanpublicclassSimpleTask{privatestaticinti=0;publicvoidprint(){System.out.println("===========start!=========");System.out.println("I:"+i);i++;System.out.println("===========end!=========");}}xml配置<!--分布式任务管理器--><beanid="zkScheduleManager"class="cn.uncode.schedule.ZKScheduleManager"init-method="init"><propertyname="zkConfig"><map><entrykey="zkConnectString"value="127.0.0.1:2181"/><entrykey="rootPath"value="/uncode/schedule"/><entrykey="zkSessionTimeout"value="60000"/><entrykey="userName"value="ScheduleAdmin"/><entrykey="password"value="password"/><entrykey="isCheckParentPath"value="true"/><entrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bean>API1动态添加任务

ConsoleManager.addScheduleTask(TaskDefinetaskDefine);

2动态删除任务

ConsoleManager.delScheduleTask(StringtargetBean,StringtargetMethod);

3查询任务列表

ConsoleManager.queryScheduleTask();

基于SpringTask的XML配置XML方式1Springbean

publicclassSimpleTask{privatestaticinti=0;publicvoidprint(){System.out.println("===========start!=========");System.out.println("I:"+i);i++;System.out.println("===========end!=========");}}2xml配置

<!--分布式任务管理器--><beanid="zkScheduleManager"class="cn.uncode.schedule.ZKScheduleManager"init-method="init"><propertyname="zkConfig"><map><entrykey="zkConnectString"value="127.0.0.1:2181"/><entrykey="rootPath"value="/uncode/schedule"/><entrykey="zkSessionTimeout"value="60000"/><entrykey="userName"value="ScheduleAdmin"/><entrykey="password"value="password"/><entrykey="isCheckParentPath"value="true"/><entrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bean><!--Springbean配置--><beanid="taskObj"class="cn.uncode.schedule.SimpleTask"/><!--Springtask配置--><task:scheduled-tasksscheduler="zkScheduleManager"><task:scheduledref="taskObj"method="print"fixed-rate="5000"/></task:scheduled-tasks>Annotation方式1Springbean

@ComponentpublicclassSimpleTask{privatestaticinti=0;@Scheduled(fixedDelay=1000)publicvoidprint(){System.out.println("===========start!=========");System.out.println("I:"+i);i++;System.out.println("===========end!=========");}}2xml配置

<!--配置注解扫描--><context:annotation-config/><!--自动扫描的包名--><context:component-scanbase-package="cn.uncode.schedule"/><!--分布式任务管理器--><beanid="zkScheduleManager"class="cn.uncode.schedule.ZKScheduleManager"init-method="init"><propertyname="zkConfig"><map><entrykey="zkConnectString"value="127.0.0.1:2181"/><entrykey="rootPath"value="/uncode/schedule"/><entrykey="zkSessionTimeout"value="60000"/><entrykey="userName"value="ScheduleAdmin"/><entrykey="password"value="password"/><entrykey="isCheckParentPath"value="true"/><entrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bean><!--Spring定时器注解开关--><task:annotation-drivenscheduler="zkScheduleManager"/>基于Quartz的XML配置注意:spring的MethodInvokingJobDetailFactoryBean改成cn.uncode.schedule.quartz.MethodInvokingJobDetailFactoryBean<beanid="zkScheduleManager"class="cn.uncode.schedule.ZKScheduleManager"init-method="init"><propertyname="zkConfig"><map><entrykey="zkConnectString"value="183.131.76.147:2181"/><entrykey="rootPath"value="/uncode/schedule"/><entrykey="zkSessionTimeout"value="60000"/><entrykey="userName"value="ScheduleAdmin"/><entrykey="password"value="password"/><entrykey="autoRegisterTask"value="true"/><entrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bean><beanid="taskObj"class="cn.uncode.schedule.SimpleTask"/><!--定义调用对象和调用对象的方法--><beanid="jobtask"class="cn.uncode.schedule.quartz.MethodInvokingJobDetailFactoryBean"><!--调用的类--><propertyname="targetObject"ref="taskObj"/><!--调用类中的方法--><propertyname="targetMethod"value="print"/></bean><!--定义触发时间--><beanid="doTime"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><propertyname="jobDetail"><refbean="jobtask"/></property><!--cron表达式--><propertyname="cronExpression"><value>0/3****?</value></property></bean><!--总管理类如果将lazy-init='false'那么容器启动就会执行调度程序--><beanid="startQuertz"lazy-init="false"autowire="no"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><propertyname="triggers"><list><refbean="doTime"/></list></property></bean>uncode-schedule管理后台访问URL:项目名称/uncode/schedule

大家都在使用uncode-schedule快速递优酷更多关于作者:冶卫军

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论