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 是互斥的,只能配置其中一个。
作业类型说明
-
定时调度作业:配置了cron表达式的作业会自动创建为ScheduleJobBootstrap,应用启动后会自动开始调度。
-
手动触发作业:未配置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
最佳实践建议
-
命名空间隔离:不同环境(开发、测试、生产)使用不同的namespace,避免相互干扰。
-
分片参数配置:合理配置shardingItemParameters,确保每个分片处理不同的数据范围。
-
监控配置:生产环境建议开启monitor-execution和tracing配置,便于问题排查。
-
端口选择:dump端口应选择不常用的端口号,避免与业务端口冲突。
-
作业类型选择:对于简单的定时任务,使用SCRIPT类型更为便捷;复杂业务逻辑建议使用elasticJobClass方式。
通过以上配置,开发者可以轻松地在Spring Boot项目中集成ElasticJob,实现分布式环境下的可靠任务调度。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



