`

分布式任务调度组件 Uncode-Schedule

 
阅读更多
http://www.oschina.net/p/uncode-schedule

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
@Component
public 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分布任务调度系统 v1.1.0.zip

    "uncode-schedule分布任务调度系统 v1.1.0.zip"是一个专为分布式环境设计的任务调度系统,它主要用于管理和执行一系列预定义的任务。在这个压缩包中,包含了系统的源码和一个简要的说明文件,这为我们提供了深入理解...

    分布式任务调度框架 集合

    基于zookeeper+spring task的分布式任务调度组件,非常小巧,无需任何修改就可以使spring task具备分布式特性,确保所有任务在集群中不重复,不遗漏的执行。 5.Quartz 官方地址:...

    uncode-schedule 学习

    "Uncode Schedule" 是一个用于任务调度的开源工具,它可能是用Java或其他编程语言实现的。这个学习资源可能包括源代码、文档或者示例,帮助开发者理解和使用该库来创建和管理计划任务。通过深入学习Uncode Schedule...

    uncode-uncode-dal-all-master_java_

    Uncode-DAL是 Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate等ORM框架开发,同时支持基于多数据源的读写分离、主备切换、故障转移,自动恢复、负载均衡、缓存等。可以大大提高开发速度。

    uncode schedule分布任务调度系统.rar

    于是出现了一些基于分布式的任务调度平台。 Scheduler 是飞书内的分布式任务调度平台。分布式任务调度能力主要包括: 分布式:平台是分布式部署的,各个节点之间可以无状态和无限的水平扩展(保证可扩展); 任务...

    uncode-mq轻量级java消息中间件

    uncode-mq:轻量级java消息中间件

    Uncode-DAL是 Java 通用数据访问组件基于mybatis、spring jdbc、hibernate等ORM框架开发

    Uncode-DAL是 Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate等ORM框架开发,同时支持基于多数据源的读写分离、主备切换、故障转移,自动恢复、负载均衡、缓存等。可以大大提高开发速度

    xmljava系统源码-uncode-dal-all:Uncode-DAL是Java通用数据访问组件,基于mybatis、springjdbc

    uncode-dal 本着不重复造轮子的原则,基于mybatis、spring jdbc、hibernate、mongo等ORM的通用数据访问层,支持基于datasource的读写分离、主备自动切换和故障转移,支持简单的负载均衡。 [TOC] 功能概述 基于...

    uncode-baas:工商管理硕士

    Uncode移动后端服务框架 Uncode移动后端服务框架,开源的移动应用后端服务平台(开源MBaaS软件),由Uncode团队开发,旨在让移动后端开发变得更简单。任何企业或个人,通过Uncode都可以给移动应用快速定制个性化的...

    基于SpringCloud的Uncode家族微服务开发脚手架设计源码

    该项目是Uncode家族的全新成员Uncode-SpringCloud,一款基于SpringCloud的微服务开发脚手架。该框架旨在快速搭建中大型系统的基础架构,集成了多种解决方案,以避免开发过程中常见的问题和挑战。框架包含517个文件,...

    文件编码转换器源码 uncode utf-8等等

    在IT领域,文件编码是处理文本数据的关键环节。不同的编码方式决定了如何将字符转化为二进制数据进行存储和传输。本文将围绕“文件编码转换器”这一主题,深入探讨Unicode、UTF-8以及如何实现编码转换。...

    wordpress主题:UNCODE V2.4.0.2【2021年最新版】2021-08-11更新.zip

    《WordPress主题:UNCODE V2.4.0.2详解》 WordPress,作为全球最受欢迎的开源内容管理系统之一,以其灵活性和强大的功能深受广大网站开发者和设计师喜爱。在众多的WordPress主题中,UNCODE以其独特的设计风格和丰富...

    【WordPress主题】2022年最新版完整功能demo+插件v2.5.0.5 Untouched.zip

    Uncode - Best Creative Multiuse & WordPress WooCommerce Theme Unlode - 最佳创意多元使用Wordpress Woocommerce主题" ---------- 泰森云每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题...

    WordPress主题:Uncode 2.3.6【2021年最新版】

    WordPress主题:Uncode 2.3.6【2021年最新版】

    uncode

    压缩包文件名称“uncode-master”可能是一个包含源代码或者工具的项目,用于帮助用户处理批处理脚本中的编码问题。这个项目可能包含了自定义的批处理脚本函数、转换工具,或者是一套指南和教程,教用户如何在批处理...

    wx-c-0-9-0-2的64位wxWidgets2.8.12 uncode gtk2的封装库

    对开源的32位的wx-c-0-9-0-2升级编译,支持freebasic、wxNET在64位平台上使用。这里放的编译后的库文件,因为互联网上找不到而原32位作者早已停更,所以才把它重新编译成64位库,这样能够继续使用下去。...

    Uncode v2.7.132023年最新版WordPress主题.zip

    【WordPress主题 Uncode v2.7.13详解】 WordPress是一个全球范围内广泛使用的开源内容管理系统,它为用户提供了创建各种类型的网站的强大平台。而Uncode是WordPress平台上一款备受推崇的主题,以其灵活性、创新性和...

    2024年最新版 Uncode主题 v2.8.8 WordPress商城主题 外贸独立站模板 含demo插件.zip

    Uncode主题是一款高度灵活、设计精美的WordPress商城主题,专为外贸独立站打造。这款主题在2024年更新到了v2.8.8版本,以满足不断变化的网站设计和功能需求。WordPress作为全球最受欢迎的内容管理系统之一,其主题...

    UNCODE V2.5.0.2 WordPress 2022年最新版外贸独立站模板.rar

    标题"UNCODE V2.5.0.2 WordPress 2022年最新版外贸独立站模板.rar"指出这是一款名为UNCODE的WordPress模板,具体版本为2.5.0.2,是2022年的最新更新。这款模板主要面向的是外贸独立站的建设,意味着它设计和功能上...

    uncode代码转换

    uncode代码转换 &lt;br&gt;大家如果觉得好,可以到我站来看看。 email:kelonre@tom.com&lt;br&gt;msn:kelonre@tom.com&lt;br&gt;QQ:53163108 (请注明申请斑竹字样) 本站QQ群号:31686490;12647825(新群) 本站UC群号:...

Global site tag (gtag.js) - Google Analytics