前置知识
在开始本教程之前,建议您具备以下基础知识:
- Java 基础知识
- Spring Boot 基础
- Maven 构建工具
- 分布式系统基础概念
什么是 XXL-Job?
XXL-Job 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
2025/9/17大约 4 分钟
前置知识
在开始本教程之前,建议您具备以下基础知识:
XXL-Job 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
前置知识
在学习本教程前,请确保您已经:
最常用的任务类型,通过 @XxlJob
注解开发,支持自动发现注册。
@Component
public class BeanModeJob {
@XxlJob("beanModeJobHandler")
public void execute() throws Exception {
XxlJobHelper.log("Bean模式任务执行");
// 业务逻辑
}
}
前置知识
在学习本教程前,请确保您已经:
分片广播会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数。适用于处理大数据量任务。
@XxlJob("shardingJob")
public void shardingJob() {
// 获取分片参数
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();
// 分片处理逻辑
List<Long> userIds = getUserIdsByMod(shardIndex, shardTotal);
for (Long userId : userIds) {
processUser(userId);
}
}
private List<Long> getUserIdsByMod(int shardIndex, int shardTotal) {
return jdbcTemplate.queryForList(
"SELECT id FROM user WHERE id % ? = ?",
Long.class,
shardTotal,
shardIndex
);
}
前置知识
在学习本教程前,请确保您已经:
public class JobScheduleHelper {
private Thread scheduleThread;
private Thread ringThread;
public void start() {
// 调度线程
scheduleThread = new Thread(() -> {
while (!scheduleThreadToStop) {
// 扫描待调度任务
List<Long> scheduleList = getScheduleList();
// 触发调度
for (Long jobId : scheduleList) {
scheduleJob(jobId);
}
// 休眠等待
TimeUnit.SECONDS.sleep(1);
}
});
scheduleThread.start();
}
}
前置知识
在开始本教程之前,建议您具备以下基础知识:
ZooKeeper 是一个开源的分布式协调服务,由 Apache 软件基金会开发和维护。它主要用于:
前置知识
在开始本教程之前,建议您具备以下基础知识:
Apache Ignite是一个分布式数据库和计算平台,它提供:
前置知识
在学习本文之前,请确保您已经:
CacheConfiguration<String, User> cacheCfg = new CacheConfiguration<>();
// 设置缓存名称
cacheCfg.setName("userCache");
// 设置缓存模式
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
// 设置原子性模式
cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
// 设置备份数
cacheCfg.setBackups(1);
前置知识
在学习本文之前,请确保您已经:
// 获取计算网格实例
IgniteCompute compute = ignite.compute();
// 获取集群组
ClusterGroup remoteGroup = ignite.cluster().forRemotes();
IgniteCompute remoteCompute = ignite.compute(remoteGroup);
前置知识
在学习本文之前,请确保您已经:
@Data
@QuerySqlField.Group(
indexes = {
@QuerySqlField.Index(name = "idx_salary", fields = {"salary"}),
@QuerySqlField.Index(name = "idx_dept_salary", fields = {"department", "salary"})
}
)
public class Employee {
@QuerySqlField(index = true)
private long id;
@QuerySqlField(index = true)
private String name;
@QuerySqlField
private String department;
@QuerySqlField
private double salary;
}
前置知识
在学习本文之前,请确保您已经:
public interface CalculatorService {
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
double divide(int a, int b);
}