• 超越任务调度的极致:初探分布式定时任务 XXL-JOB 分片广播


    XXL-JOB 是一个分布式任务调度平台,支持分片任务执行。

    1. 依赖引入

    在项目中引入 XXL-JOB 的相关依赖。通常,你需要在项目的 pom.xml 文件中添加如下依赖:

    1. <dependency>
    2.     <groupId>com.xuxueligroupId>
    3.     <artifactId>xxl-job-coreartifactId>
    4.     <version>2.3.0version>
    5. dependency>

    2. 任务类编写

    编写需要调度的任务类,并使用 @XxlJob 注解标记需要执行的方法。
    在需要分片的方法上使用 @XxlJob 注解,并添加 @XxlJob(value = "yourJobHandler", distributedJob = true) 注解配置分片任务。

    1. import com.xxl.job.core.context.XxlJobHelper;
    2. import com.xxl.job.core.handler.annotation.XxlJob;
    3. public class MyJobHandler {
    4.     @XxlJob(value = "yourJobHandler", distributedJob = true)
    5.     public void execute() {
    6.         // 获取分片参数
    7.         int shardIndex = XxlJobHelper.getShardIndex();
    8.         int shardTotal = XxlJobHelper.getShardTotal();
    9.         // 根据分片参数执行相应的逻辑
    10. for (int i = 0; i < 1000; i++) {
    11. if (i % shardCount == shardIndex) {
    12. // 当前分片项需要执行的任务逻辑
    13. System.out.println("Shard " + shardIndex + " is running: " + i);
    14. }
    15. }
    16.         // 任务执行完成后,如果有分片任务,需调用该方法告知调度中心当前分片任务已完成
    17.         XxlJobHelper.handleShardResult("分片任务执行完成");
    18.     }
    19. }

    3. JobHandler注册

    在Spring Boot 项目中,需要注册 JobHandler 到 Spring 容器。可以使用 @Component 或者配置文件来完成注册。

    1. import com.xxl.job.core.executor.XxlJobExecutor;
    2. import org.springframework.context.annotation.Bean;
    3. import org.springframework.context.annotation.Configuration;
    4. @Configuration
    5. public class XxlJobConfig {
    6.     @Bean
    7.     public XxlJobExecutor xxlJobExecutor() {
    8.         XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
    9.         xxlJobExecutor.setAdminAddresses("http://your-admin-address");
    10.         xxlJobExecutor.setAppName("your-app-name");
    11.         xxlJobExecutor.setIp("your-ip");
    12.         xxlJobExecutor.setPort(9999);
    13.         xxlJobExecutor.setAccessToken("your-access-token");
    14.         xxlJobExecutor.setLogPath("your-log-path");
    15.         xxlJobExecutor.setLogRetentionDays(7);
    16.         return xxlJobExecutor;
    17.     }
    18. }

    4. 配置管理中心

    在 XXL-JOB 的管理中心(Admin)中配置任务,确保分片任务的设置正确(具体配置可以参考 XXL-JOB 官方文档)。

    5. 任务执行流程

    当任务触发时,调度中心将任务发送给执行器。

    执行器根据配置的任务处理器(JobHandler)找到对应的任务方法。

    如果该任务方法使用了 @XxlJob 注解,并配置了 distributedJob = true,则启用分片任务。

    分片任务在执行前,执行器会根据配置的 shardTotal 数量创建对应的子任务。

    每个子任务执行时,可以通过 XxlJobHelper.getShardIndex() 和 XxlJobHelper.getShardTotal() 获取当前分片任务的索引和总数。

    子任务执行完成后,需要调用 XxlJobHelper.handleShardResult("分片任务执行完成") 来告知调度中心当前分片任务已完成。

  • 相关阅读:
    【秋招基础知识】【1】特征降维方法 PCA+LDA
    【cmake实战七】如何使用编译的库(动态库dll)2——windows系统
    如何在几分钟内创建一个对话机器人?
    看了就能懂的NIO使用深入详解
    java-php-python-ssm基于专家系统房产营销智能推荐系统计算机毕业设计
    hive笔记
    Java基础知识&面试题总结(下)
    video_topic
    React面试题总结
    大数据Flink(七十一):SQL的时间属性
  • 原文地址:https://blog.csdn.net/maple05/article/details/134384481