基于zookeeper+sprigtask/quartz的分布式任务调度组件,确保所有任务在集群中不重复,不遗漏的执行。支持动态添加和删除任务。
功能概述基于zookeeper+sprigtask/quartz的分布任务调度系统。确保每个任务在集群中不同节点上不重复的执行。单个任务节点故障时自动转移到其他任务节点继续执行。任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。支持动态添加和删除任务。添加ip黑名单,过滤不需要执行任务的节点。简单管理后台说明:单节点故障时需要业务保障数据完整性或幂等性具体使用方式和sprigtask相同k模块架构 Ucode-ScheduleSprigbeapublicclassSimpleTask{privatestaticiti=0;publicvoidprit(){System.out.pritl("===========start!=========");System.out.pritl("I:"+i);i++;System.out.pritl("===========ed!=========");}}xml配置<!--分布式任务管理器--><beaid="zkScheduleMaager"class="c.ucode.schedule.ZKScheduleMaager"iit-method="iit"><propertyame="zkCofig"><map><etrykey="zkCoectStrig"value="127.0.0.1:2181"/><etrykey="rootPath"value="/ucode/schedule"/><etrykey="zkSessioTimeout"value="60000"/><etrykey="userName"value="ScheduleAdmi"/><etrykey="password"value="password"/><etrykey="isCheckParetPath"value="true"/><etrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bea>API1动态添加任务CosoleMaager.addScheduleTask(TaskDefietaskDefie);2动态删除任务CosoleMaager.delScheduleTask(StrigtargetBea,StrigtargetMethod);3查询任务列表CosoleMaager.queryScheduleTask();基于SprigTask的XML配置XML方式1SprigbeapublicclassSimpleTask{privatestaticiti=0;publicvoidprit(){System.out.pritl("===========start!=========");System.out.pritl("I:"+i);i++;System.out.pritl("===========ed!=========");}}2xml配置<!--分布式任务管理器--><beaid="zkScheduleMaager"class="c.ucode.schedule.ZKScheduleMaager"iit-method="iit"><propertyame="zkCofig"><map><etrykey="zkCoectStrig"value="127.0.0.1:2181"/><etrykey="rootPath"value="/ucode/schedule"/><etrykey="zkSessioTimeout"value="60000"/><etrykey="userName"value="ScheduleAdmi"/><etrykey="password"value="password"/><etrykey="isCheckParetPath"value="true"/><etrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bea><!--Sprigbea配置--><beaid="taskObj"class="c.ucode.schedule.SimpleTask"/><!--Sprigtask配置--><task:scheduled-tasksscheduler="zkScheduleMaager"><task:scheduledref="taskObj"method="prit"fixed-rate="5000"/></task:scheduled-tasks>Aotatio方式1Sprigbea@CompoetpublicclassSimpleTask{privatestaticiti=0;@Scheduled(fixedDelay=1000)publicvoidprit(){System.out.pritl("===========start!=========");System.out.pritl("I:"+i);i++;System.out.pritl("===========ed!=========");}}2xml配置<!--配置注解扫描--><cotext:aotatio-cofig/><!--自动扫描的包名--><cotext:compoet-scabase-package="c.ucode.schedule"/><!--分布式任务管理器--><beaid="zkScheduleMaager"class="c.ucode.schedule.ZKScheduleMaager"iit-method="iit"><propertyame="zkCofig"><map><etrykey="zkCoectStrig"value="127.0.0.1:2181"/><etrykey="rootPath"value="/ucode/schedule"/><etrykey="zkSessioTimeout"value="60000"/><etrykey="userName"value="ScheduleAdmi"/><etrykey="password"value="password"/><etrykey="isCheckParetPath"value="true"/><etrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bea><!--Sprig定时器注解开关--><task:aotatio-drivescheduler="zkScheduleMaager"/>基于Quartz的XML配置注意:sprig的MethodIvokigJobDetailFactoryBea改成c.ucode.schedule.quartz.MethodIvokigJobDetailFactoryBea<beaid="zkScheduleMaager"class="c.ucode.schedule.ZKScheduleMaager"iit-method="iit"><propertyame="zkCofig"><map><etrykey="zkCoectStrig"value="183.131.76.147:2181"/><etrykey="rootPath"value="/ucode/schedule"/><etrykey="zkSessioTimeout"value="60000"/><etrykey="userName"value="ScheduleAdmi"/><etrykey="password"value="password"/><etrykey="autoRegisterTask"value="true"/><etrykey="ipBlacklist"value="127.0.0.2,127.0.0.3"/></map></property></bea><beaid="taskObj"class="c.ucode.schedule.SimpleTask"/><!--定义调用对象和调用对象的方法--><beaid="jobtask"class="c.ucode.schedule.quartz.MethodIvokigJobDetailFactoryBea"><!--调用的类--><propertyame="targetObject"ref="taskObj"/><!--调用类中的方法--><propertyame="targetMethod"value="prit"/></bea><!--定义触发时间--><beaid="doTime"class="org.sprigframework.schedulig.quartz.CroTriggerFactoryBea"><propertyame="jobDetail"><refbea="jobtask"/></property><!--cro表达式--><propertyame="croExpressio"><value>0/3****?</value></property></bea><!--总管理类如果将lazy-iit='false'那么容器启动就会执行调度程序--><beaid="startQuertz"lazy-iit="false"autowire="o"class="org.sprigframework.schedulig.quartz.SchedulerFactoryBea"><propertyame="triggers"><list><refbea="doTime"/></list></property></bea>ucode-schedule管理后台访问URL:项目名称/ucode/schedule大家都在使用ucode-schedule快速递优酷更多关于作者:冶卫军点击空白处退出提示














评论