ElasticJob Spring Boot Starter 配置完全指南

ElasticJob Spring Boot Starter 配置完全指南

什么是 ElasticJob Spring Boot Starter

ElasticJob 是一个分布式任务调度解决方案,而 Spring Boot Starter 是 ElasticJob 为 Spring Boot 应用提供的快速集成模块。通过这个 Starter,开发者可以轻松地在 Spring Boot 项目中配置和使用 ElasticJob 的各种功能,无需编写大量样板代码。

快速开始

要在 Spring Boot 项目中使用 ElasticJob,首先需要在项目的依赖管理文件中添加 Starter 依赖:

<dependency>
    <groupId>org.apache.shardingsphere.elasticjob</groupId>
    <artifactId>elasticjob-spring-boot-starter</artifactId>
    <version>${最新版本号}</version>
</dependency>

注册中心配置详解

注册中心是 ElasticJob 的核心组件之一,负责协调分布式环境下的作业调度。在 Spring Boot 中,我们可以通过以下方式配置:

基础配置项

| 配置项名称 | 是否必填 | 说明 | |----------------------------|----------|------| | server-lists | 是 | 注册中心服务器列表 | | namespace | 是 | 命名空间,用于隔离不同环境 | | base-sleep-time-milliseconds | 否 | 初始重试等待时间(毫秒) | | max-sleep-time-milliseconds | 否 | 最大重试等待时间(毫秒) | | max-retries | 否 | 最大重试次数 | | session-timeout-milliseconds | 否 | 会话超时时间(毫秒) | | connection-timeout-milliseconds | 否 | 连接超时时间(毫秒) | | digest | 否 | 连接认证密钥 |

配置示例

YAML 格式配置:

elasticjob:
  regCenter:
    serverLists: localhost:6181
    namespace: elasticjob-springboot
    baseSleepTimeMilliseconds: 1000
    maxSleepTimeMilliseconds: 3000
    maxRetries: 3

Properties 格式配置:

elasticjob.reg-center.server-lists=localhost:6181
elasticjob.reg-center.namespace=elasticjob-springboot
elasticjob.reg-center.base-sleep-time-milliseconds=1000

作业配置详解

ElasticJob 支持多种作业类型,包括简单作业、数据流作业和脚本作业等。在 Spring Boot Starter 中,我们可以方便地配置这些作业。

核心配置项

| 配置项名称 | 是否必填 | 说明 | |----------------------------|----------|------| | elasticJobClass/elasticJobType | 是 | 作业实现类或作业类型 | | cron | 否 | CRON表达式 | | timeZone | 否 | 时区 | | jobBootstrapBeanName | 否 | 手动触发作业的Bean名称 | | sharding-total-count | 是 | 作业分片总数 | | sharding-item-parameters | 否 | 分片参数 | | job-parameter | 否 | 作业自定义参数 | | monitor-execution | 否 | 是否监控执行 | | failover | 否 | 是否开启失效转移 | | misfire | 否 | 是否开启错过任务重新执行 | | job-sharding-strategy-type | 否 | 作业分片策略类型 | | job-error-handler-type | 否 | 作业错误处理策略 |

注意:elasticJobClass 和 elasticJobType 是互斥的,只能配置其中一个。

作业类型说明

  1. 定时调度作业:配置了cron表达式的作业会自动创建为ScheduleJobBootstrap,应用启动后会自动开始调度。

  2. 手动触发作业:未配置cron表达式的作业会创建为OneOffJobBootstrap,需要通过jobBootstrapBeanName手动注入并触发执行。

配置示例

YAML 格式配置:

elasticjob:
  jobs:
    simpleJob:
      elasticJobClass: com.example.MySimpleJob
      cron: 0/5 * * * * ?
      shardingTotalCount: 3
      shardingItemParameters: 0=北京,1=上海,2=广州
    scriptJob:
      elasticJobType: SCRIPT
      cron: 0/10 * * * * ?
      shardingTotalCount: 3
      props:
        script.command.line: "echo 执行脚本作业"

Properties 格式配置:

elasticjob.jobs.simpleJob.elastic-job-class=com.example.MySimpleJob
elasticjob.jobs.simpleJob.cron=0/5 * * * * ?
elasticjob.jobs.simpleJob.sharding-total-count=3
elasticjob.jobs.simpleJob.sharding-item-parameters=0=北京,1=上海,2=广州

事件追踪配置

ElasticJob 提供了作业执行事件追踪功能,目前支持RDB方式存储追踪数据。

配置项说明

| 配置项名称 | 选项 | 是否必填 | 说明 | |----------------|------|----------|------| | type | RDB | 否 | 追踪类型 | | includeJobNames | | 否 | 包含的作业名列表 | | excludeJobNames | | 否 | 排除的作业名列表 |

注意:includeJobNames和excludeJobNames是互斥的,当两者都未配置时,会追踪所有作业。

配置示例

YAML 格式配置:

elasticjob:
  tracing:
    type: RDB
    excludeJobNames: [testJob, demoJob]

Properties 格式配置:

elasticjob.tracing.type=RDB
elasticjob.tracing.excludeJobNames=testJob,demoJob

作业信息导出配置

ElasticJob 提供了作业信息导出功能,可以通过HTTP端口访问作业运行状态。

配置项说明

| 配置项名称 | 默认值 | 是否必填 | 说明 | |-----------|--------|----------|------| | enabled | true | 否 | 是否启用导出 | | port | | 是 | 导出端口号 |

注意:必须配置端口号才能启用导出功能。

配置示例

YAML 格式配置:

elasticjob:
  dump:
    port: 9888

Properties 格式配置:

elasticjob.dump.port=9888

最佳实践建议

  1. 命名空间隔离:不同环境(开发、测试、生产)使用不同的namespace,避免相互干扰。

  2. 分片参数配置:合理配置shardingItemParameters,确保每个分片处理不同的数据范围。

  3. 监控配置:生产环境建议开启monitor-execution和tracing配置,便于问题排查。

  4. 端口选择:dump端口应选择不常用的端口号,避免与业务端口冲突。

  5. 作业类型选择:对于简单的定时任务,使用SCRIPT类型更为便捷;复杂业务逻辑建议使用elasticJobClass方式。

通过以上配置,开发者可以轻松地在Spring Boot项目中集成ElasticJob,实现分布式环境下的可靠任务调度。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值